什么是解除操作员?
我正在看这篇文章,并正在努力遵循说明解除运营商的VB.NET的例子。 似乎没有一个等效的C#示例或教程。 我一般都没有太多的操作符重载的经验,所以试图与VB.NET相当,而读取可空types可能不是最好的开始…
任何人都可以提供解除操作符的解释,以及它们是如何被可空types使用的? 这是否意味着可以为null的types本身并不重载运算符,并且将使用它所表示的基础types的运算符?
关于解除运营商似乎没有太多的信息,所以希望这可以帮助其他人。
谢谢
提升的操作员是通过“提升”已经存在于不可空的表格上的操作员来操作可空types的操作员。 例如,如果你这样做:
int? x = 10; int? y = 10; int? z = x + y;
该“+”运算符被解除。 它实际上并不存在于Nullable<int>
但是C#编译器的行为就像它一样,生成代码来做正确的事情。 (对于大多数情况,这是检查两个操作数是否为null的问题;如果是,则结果为null;否则,将两个操作数解包为非空值,使用正常运算符,然后将结果包装回虽然可以为空值,但还是有一些比较特殊的情况。)
有关更多信息,请参见C#规范的第6.4.2节(提升的转换运算符)和第7.3.7节(提升的运算符)。
- 我应该使用结构还是类来表示Lat / Lng坐标?
- 如果选中,请更改ListBox项目的WPF DataTemplate
- 为什么在.NET中没有RAII?
- 由于.NET有一个垃圾收集器,为什么我们需要finalizer / destructors / dispose-pattern?
- 如何在LINQ to XML中做一个元素的深层副本?
- SqlCommand.CommandTimeout和SqlConnection.ConnectionTimeout有什么区别?
- MSBuild ProjectReference:private(“Copy Local”) – 允许的值和行为是什么?
- 什么是对象图,我如何序列化一个对象图
- XmlNode值vs InnerText