C# 转换关键字 operator
operator
使用
operator关键字重载内置运算符,或在类或结构声明中提供用户定义的转换。
假设场景,一个Student类,有语文和数学两科成绩,Chinese Math,加减两科成绩,不重载运算,代码如下。
class Student
{
/// <summary>
/// 语文成绩
/// </summary>
public double Chinese { get; set; }
/// <summary>
/// 数学成绩
/// </summary>
public double Math { get; set; }
}
比较两个成绩差距
var a = new Student
{
Chinese = 90.5d,
Math = 88.5d
};
var b = new Student
{
Chinese = 70.5d,
Math = 68.5d
};
//a的语文比b的语文高多少分
Console.WriteLine(a.Chinese - b.Chinese);
//a的数学比b的数学高多少分
Console.WriteLine(a.Math - b.Math);
使用operator 重载 -
class Student
{
/// <summary>
/// 语文成绩
/// </summary>
public double Chinese { get; set; }
/// <summary>
/// 数学成绩
/// </summary>
public double Math { get; set; }
public static Student operator -(Student a, Student b)
{
return new Student
{
Chinese = a.Chinese - b.Chinese,
Math = a.Math - b.Math
};
}
}
比较成绩差距的代码可以改为
class Program
{
static void Main(string[] args)
{
var a = new Student
{
Chinese = 90.5d,
Math = 88.5d
};
var b = new Student
{
Chinese = 70.5d,
Math = 68.5d
};
var c = a - b;
//a的语文比b的语文高多少分
Console.WriteLine(c.Chinese);
//a的数学比b的数学高多少分
Console.WriteLine(c.Math);
}
}
参考:运算符(C# 参考)
C# 转换关键字 operator的更多相关文章
- C# 隐式转换关键字 implicit
implicit 关键字用于声明隐式的用户定义类型转换运算符. 如果可以确保转换过程不会造成数据丢失,则可使用该关键字在用户定义类型和其他类型之间进行隐式转换. 引用摘自:implicit(C# 参考 ...
- c#自定义类型的转换方式operator,以及implicit(隐式)和explicit (显示)声明
https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/explicit https://docs.mic ...
- 运算符重载关键字operator
operator关键字用来重载内置运算符,使用方法如下: public class OperatorController : Controller { // // GET: /Operator/ pu ...
- C++ operator关键字(重载操作符)(转)
operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名. 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算 ...
- C++中operator关键字(重载操作符)
operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名. 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算 ...
- C++ operator关键字
operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名. 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算 ...
- C++ 学习六 operator关键字(重载)
转载:http://blog.sina.com.cn/s/blog_4b3c1f950100kker.html operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将 o ...
- [019]转--C++ operator关键字(重载操作符)
原博客:http://www.cnblogs.com/speedmancs/archive/2011/06/09/2076873.html operator是C++的关键字,它和运算符一起使用,表示一 ...
- C++ operator关键字(重载操作符)
operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名. 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面 ...
随机推荐
- 浮点数运算结果不精确,以及用String来构造BigDecimal进行浮点数精确计算
1.浮点数运算结果不精确 先看如下代码 System.out.println(1.0 - 0.8); System.out.println(0.2 + 0.1); System.out.println ...
- LCD_FSMC
/************************************************************************** * 文件名:LCD_FSMC.h * * 编写人 ...
- kubernetes CRD学习笔记
前言 最近在极客时间订阅了kubernetes的专栏,这篇文章是想记录一下自己学习CRD(custom resource definition)的过程,加深一下记忆. 准备工作 首先安装一下我们用的g ...
- Android中RecyclerView出现java.lang.IndexOutOfBoundsException
在RecyclerView更细数据时出现java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder ...
- Python小练习之判断一个日期是一年的第几天
python练手遇到的一个问题写了个统一公式,不用麻烦的分各种类,如果有人测试出错误请评论通知. #分单双月 def dayNum(month,day,isLeap): if month % 2 != ...
- [转]Virtio balloon
http://rwmj.wordpress.com/2010/07/17/virtio-balloon/ After someone asked me a question about “balloo ...
- 干货---stm32f103之DMA双缓冲__也算我为网络贡献的微薄之力
思考再三:终究是要拿出一些干货--单片机基础核心代码,串口的高效率使用请这里开始.--举一反三,我只列出串口一的双dma缓冲应用范例,剩下的自己扩展.并给与了我迄今觉得最好的串口配置架构-感谢野火的高 ...
- Android开发技术周报176学习记录
Android开发技术周报176学习记录 教程 当 OkHttp 遇上 Http 2.0 http://fucknmb.com/2018/04/16/%E5%BD%93OkHttp%E9%81%87% ...
- Log4J从基础到应用
1.API中核心的三个接口(org.apache.log4j) Class Logger This is the central class in the log4j package. Most lo ...
- JS 实现触发下载内容(H5 download)
概述 我对使用js控制下载非常感兴趣,在网上查资料的时候碰巧看到了相关实现方法,记录下来供以后开发时参考,相信对其他人也有用. 参考资料: JS前端创建html或json文件并浏览器导出下载 理解DO ...