概述:C#中提供了如“+”,“-”,“*”,“/” 等一些对数字的运算,可以使用这些运算符进行一些列的运算。
问题:现在产生了一个问题,我需要对一个类“Class”进行这些数学运算,能使用Class1+Class2的方式产生数学运算的结果吗?如果执行这些运算能达到我预期的结果吗?
解决方案:使用C#中提供的运算符重载,对类Class进行运算的重载,来实现我们的需求
如下代码描述了如何对一个类Class进行“+”运算的重载,最后得到的结果为“False”
1.申明一个“+”运算重载的类
[C#] 纯文本查看 复制代码 /// <summary>
/// 申明计算类
/// </summary>
public class NewCalc
{
/// <summary>
/// 属性A
/// </summary>
public int? A { get; set; }
/// <summary>
/// 属性B
/// </summary>
public int? B { get; set; }
/// <summary>
/// 重载的“+”运算
/// </summary>
/// <param name="arg1">参数1</param>
/// <param name="arg2">参数2</param>
/// <returns>计算结果</returns>
public static bool operator +(NewCalc arg1, NewCalc arg2)
{
return arg1.A == null && arg2.A == null ? false : true;
}
}
2.类Class的运算重载已经完成,我们来测试一下计算结果
[C#] 纯文本查看 复制代码 //用于原算法重载测试
NewCalc arg = new NewCalc();
//得到重载运算的结果
var c = arg + arg;
观察可发现结果C为False,至此,一个简单的运算符重载就实现了,其它的运算符重载是一样的方式,那就交给聪明的你去试一试效果了。
|