千家信息网

C# .NET使用操作符的方法有哪些

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"C# .NET使用操作符的方法有哪些",在日常操作中,相信很多人在C# .NET使用操作符的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C
千家信息网最后更新 2026年11月02日C# .NET使用操作符的方法有哪些

这篇文章主要介绍"C# .NET使用操作符的方法有哪些",在日常操作中,相信很多人在C# .NET使用操作符的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C# .NET使用操作符的方法有哪些"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

操作符的重载

操作符重载大部分语言都没有,而 C# 有。C# 允许用户定义类型对操作符进行重载,方式是使用 operate 关键字把操作符写成公开静态函数。下面来演示一下重载 + 这个操作符。

我们创建一个 Complex 结构类型来代表一个复数,我们知道复数有实数和虚数组成,于是可以这样定义:

public struct Complex{    public double Real { get; set; }    public double Imaginary { get; set; }}

现在我们想实现复数的相加操作,即:

Complex a = new Complex() { Real = 1, Imaginary = 2 };Complex b = new Complex() { Real = 4, Imaginary = 8 };Complex c = a + b;

默认情况,自定义类是不能进行算术运算的,以上 a + b 会编译报错,我们需要对 + 进行操作符重载:

public static Complex operator +(Complex c1, Complex c2){    return new Complex    {        Real = c1.Real + c2.Real,        Imaginary = c1.Imaginary + c2.Imaginary    };}

C# 中像加减乘除等这类操作符都可以重载,也有些操作符是不能重载的,具体请查看文末参考链接。

隐式和显式转换操作符

我们知道子类可以隐式转换为父类,在某种情况下(如父类由子类赋值而来)父类可以显式转换为子类。

在 C# 中,对于没有子父类关系的用户定义类型,也是可以实现显式和隐式转换的。C# 允许用户定义类型通过使用 implicit 和 explicit 关键字来控制对象的赋值和对象的类型转换。它的定义形式如下:

public static  operator <结果类型>(<源类型> myType)

这里以结果类型为方法名,源类型对象作为参数,只能是这一个参数,不能定义第二个参数,但可以通过该参数对象访问其类的私有成员。下面是一个既有显式又有隐式转换操作符的例子:

public class BinaryImage{    private readonly bool[] _pixels;    // 隐式转换操作符示例    public static implicit operator ColorImage(BinaryImage bm)    {        return new ColorImage(bm);    }    // 显式转换操作符示例    public static explicit operator bool[](BinaryImage bm)    {        return bm._pixels;    }}public class ColorImage{    public ColorImage(BinaryImage bm) { }}

这样,我们就可以把 BinaryImage 对象隐式转换为 ColorImage 对象,把 BinaryImage 对象显式转换为 bool 数组对象:

var binaryImage = new BinaryImage();ColorImage colorImage = binaryImage; // 隐式转换bool[] pixels = (bool[])binaryImage; // 显式转换

而且转换操作符可以定义为双向显示和隐式转换。既可从你的类型而来,亦可到你的类型而去:

public class BinaryImage{    public BinaryImage(ColorImage cm) { }    public static implicit operator ColorImage(BinaryImage bm)    {        return new ColorImage(bm);    }    public static explicit operator BinaryImage(ColorImage cm)    {        return new BinaryImage(cm);    }}

我们知道 as 操作符也是一种显式转换操作符,那它适用于上面的这种情况吗,即:

ColorImage cm = myBinaryImage as ColorImage;

你觉得这样写有问题吗?请在评论区告诉我答案。

空条件和空联合操作符

空条件(Null Conditional)操作符 ?. 和空联合(Null Coalescing)操作符 ??,都是 C# 6.0 的语法,大多数人都很熟悉了,使用也很简单。

?. 操作符会在对象为 null 时立即返回 null,不为 null 时才会调用后面的代码。其中的符号 ? 代表对象本身,符号 . 代表调用,后面不仅可以是对象的属性也可以是索引器或方法。以该操作符为分隔的每一截类型相同时可以接龙。示例:

var bar = foo?.Value; // 相当于 foo == null ? null : foo.Valuevar bar = foo?.StringValue?.ToString(); // 每一截类型相同支持接龙var bar = foo?.IntValue?.ToString(); // 每一截类型不同,不能接龙,因为结果类型无法确定

如果是调用索引器,则不需要符号 .,比如:

var foo = new[] { 1, 2, 3 };var bar = foo?[1]; // 相当于 foo == null ? null : foo[1]

空联合操作符 ??,当左边为空时则返回右边的值,否则返回左边的值。同样,每一截的类型相同时支持接龙。

var fizz = foo.GetBar() ?? bar;var buzz = foo ?? bar ?? fizz;

=> Lambda 操作符

Lambda 操作符,即 =>,它用来定义 Lambda 表达式,也被广泛用于 LINQ 查询。它的一般定义形式如下:

(input parameters) => expression

示例:

string[] words = { "cherry", "apple", "blueberry" };int minLength = words.Min((string w) => w.Length);

实际应用中我们一般省略参数的类型声明:

int minLength = words.Min(w => w.Length);

Lambda 操作符的后面可以是表达式,可以是语句,也可以是语句块,比如:

// 表达式(int x, int y) => x + y// 语句(string x) => Console.WriteLine(x)// 语句块(string x) => {    x += " says Hello!";    Console.WriteLine(x);}

这个操作符也可以很方便的用来定义委托方法(其实 Lambda 操作符就是由委托演变而来)。

单独定义委托方法:

void MyMethod(string s){    Console.WriteLine(s + " World");}delegate void TestDelegate(string s);TestDelegate myDelegate = MyMethod;myDelegate("Hello");

使用 Lambda 操作符:

delegate void TestDelegate(string s);TestDelegate myDelegate = s => Console.WriteLine(s + " World");myDelegate("Hello");

在一个类中,当实现体只有一句代码时,也可以用 Lambda 操作符对方法和 Setter / Getter 进行简写:

public class Test{    public int MyProp { get => 123; }    public void MyMethod() => Console.WriteLine("Hello!");}

到此,关于"C# .NET使用操作符的方法有哪些"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

操作符 类型 对象 方法 C# 参数 接龙 示例 语句 学习 相同 代表 复数 子类 情况 用户 符号 表达式 委托 联合 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东万易互联网科技有限公司惠州分公司 湖南永感互联网科技有限公司 科技互联网企业 互联网科技股票 紫鲸互联网科技 广州宏创互联网科技 世界互联网领先科技成果 广州凡科互联网科技 互联网科技英文翻译 卫星互联网科技股票 隆华科技工业互联网 科技互联网的估值 以后互联网后是啥科技 科技与互联网哪个更好 湖南诚度互联网科技有限公司 佛山市拉法互联网科技有限公司 元气玛特互联网科技公司是外包吗 云南省自由互联网科技有限公司 互联网科技快讯热点 陕西彩京云互联网科技有限公司 天津摩尔互联网科技 科技互联网公司logo 互联网科技英文翻译 济南和联互联网科技有限公司 玖二柒互联网科技公司待遇 宁夏科技产业互联网案例 互联网科技革命什么开始 速维有品互联网信息科技(苏州)有限公司 神州科技互联网有限公司 科技互联网经济论坛
0