Alp*_*pha 4 .net c# nullable operator-overloading assignment-operator
我一直认为.NET框架的可空类型只是框架给我们的一个很好的构造,但并没有添加到语言本身的任何新东西.
也就是说,直到今天,为了演示,我尝试创建自己的Nullable结构.
我得到了我需要的一切,除了这样做的能力:
var myInt = new Nullable<int>(1);
myInt = 1;
Run Code Online (Sandbox Code Playgroud)
问题是第二个语句,因为我不能以任何方式重载赋值运算符.
我的问题是:这是一个特殊情况,在赋值运算符有过载的语言中?如果没有,你会如何使之前的例子有效?
谢谢!
Ree*_*sey 10
赋值是使用声明为的隐式运算符来处理问题:
public static implicit operator Nullable<T> (T value)
处理时没有任何特定于语言的功能.
对于可空支持的语言的主要变化是能够将其写为:
int? myInt = 1;
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式在您的类型中实现此
public static implicit operator Nullable<T> (T value)
{
return new Nullable<T>(value);
}
Run Code Online (Sandbox Code Playgroud)
令人遗憾的是,有许多与Nullable<T>C#语言相关的功能,而CLR确实无法在您的代码中复制.