C#操作符重载如何实现

发布时间:2021-12-03 09:44:41 作者:iii
来源:亿速云 阅读:140

这篇文章主要讲解了“C#操作符重载如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#操作符重载如何实现”吧!

C#操作符重载是什么?

是指允许用户使用用户定义的类型编写表达式的能力。

例如,通常需要编写类似于以下内容的代码,以将两个数字相加。很明显,sum 是两个数字之和。

int i = 5;
int sum = i + j;

如果可以使用代表复数的用户定义的类型来编写相同类型的表达式,那当然是***不过了:

Complex i = 5;
Complex sum = i + j;

运算符重载允许为用户定义的类型重载(即指定明确的含义)诸如“+”这样的运算符。如果不进行重载,则用户需要编写以下代码:

Complex i = new Complex(5);
Complex sum = Complex.Add(i, j);

此代码可以很好地运行,但 Complex 类型并不能象语言中的预定义类型那样发挥作用。

在我看来是操作符重载是让struct、class、Interface等能够进行运算。

如时实现C#操作符重载。

先写关键词public和static,后跟返回类型,后跟operator关键词,后跟要声明的操作符符号,***在对一对圆括号中添加恰当的参数。

如下例中的struct Hour中的public static Hour operator+ (Hour lhs,Hour rhs){...}

C#操作符重载方法:

1、编写操作符重载方法。

2、实例化后,进行操作符运算

下边用C#操作符重载代码进行说明:

class Program  {  static void Main(string[] args)  {  Hour hrValue1 = new Hour(10);  Hour hrValue2 = new Hour(20);   //2、得到两个Hour相加结果  Hour hrSum = hrValue1 + hrValue2;   //得到Hour+Int的结果  Hour hrSumInt = hrValue1 + 10;   //得到Int+Hour的结果  Hour hrIntSum = 11 + hrValue2;  Console.WriteLine("hrValue1 +  hrValue2 = {0}", hrSum.iValue);  Console.WriteLine("hrValue1 +  10  = {0}", hrSumInt.iValue);  Console.WriteLine("11 +  hrValue2  = {0}", hrIntSum.iValue);  Console.ReadKey();  }  struct Hour  {  private int value;  //此构造函数根据int值创建Hour类 ,C#操作符重载 public Hour(int iValue)  {  this.value = iValue;  }  //定义一个属性,便于取用value值  public int iValue  {  get {  return value;  }  } //C#操作符重载//1、声明一个二元操作符,将两个Hour类加到一起   public static Hour operator+ (Hour lhs,Hour rhs)  {  return new Hour(lhs.value + rhs.value);  }   /*  操作符是public的。所有操作符都必须是public的   操作符是static的。所有操作符都必须是static的,操作永远不具有多态性,   面且不能使用virtual、abstract、override或者sealed修饰符。   二元操作符(比如+)有两个显式参数;一元操作符有一个显式的参数   我们有了public Hour(int iValue)构造函数,就可以将一个int与Hour相加,只是首先要将int转换成为Hour   hour a= ;   int b= ;   Hour sum=a+new Hour(b);   虽然上述代码完全有效,但相较于让一个Hour和一个int直接相加它即不清晰也不准确。   为了使Hour可以+ int,必须声明一个二元操作符+,它的***个参数是Hour,第二个参数是一个int。   C#操作符重载 */ public static Hour operator+ (Hour lhs,int rhs)  {  return lhs + new Hour(rhs);  }  //使一个int 可以+hour。  public static Hour operator +(int lhs, Hour rhs)  {  return new Hour(lhs)+rhs;  }  }  }

C#操作符重载示例2:

struct Hour  {  public int iValue;  //构造函数  public Hour(int initialValue)  {  this.iValue = initialValue;  }  //1、定义操作符重载(一元操作符)  public static Hour operator ++ (Hour huValue)  {  huValue.iValue++;  return huValue;  }  //C#操作符重载 //==操作符是二元操作符,必须带有两个参数  public static bool operator==(Hour lhs,Hour rhs)  {  return lhs.iValue == rhs.iValue;  }  public static bool operator!=(Hour lhs,Hour rhs)  {  return lhs.iValue != rhs.iValue;  }  }   //++操作符有前缀和后缀的形式,C#能智能地为前缀后后缀使用同一个操作符。   static void Main(string[] args)  {  //2、实例化类  ,C#操作符重载 Hour hu = new Hour(10);  //3、  //操作符重载   hu++;  //输出重载后的结果   Console.WriteLine("Hu++ = {0}", hu.iValue);  //C#操作符重载   ++hu;  //输出重载后的结果   Console.WriteLine("Hu++ = {0}", hu.iValue);   Console.ReadKey();  }

感谢各位的阅读,以上就是“C#操作符重载如何实现”的内容了,经过本文的学习后,相信大家对C#操作符重载如何实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. 逗号操作符重载分析(三十三)
  2. new delete操作符重载

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:C#怎么写入Excel操作

下一篇:tk.Mybatis插入数据获取Id怎么实现

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》