gpt4 book ai didi

c# - 可空类型和赋值运算符

转载 作者:太空狗 更新时间:2023-10-29 23:58:17 25 4
gpt4 key购买 nike

我一直认为 .NET 框架的可空类型只是框架给我们的一个很好的结构,而不是语言本身的任何新内容。

也就是说,直到今天,出于演示的目的,我尝试创建自己的 Nullable 结构。

我得到了我需要的一切,除了这样做的能力:

var myInt = new Nullable<int>(1);
myInt = 1;

问题是第二条语句,因为无论如何我都不能重载赋值运算符。

我的问题是:这是赋值运算符重载的语言中的特例吗?如果不是,您将如何使前面的示例起作用?

谢谢!

最佳答案

赋值问题是使用声明为的隐式运算符处理的:

public static implicit operator Nullable<T> (T value)

这是在没有任何语言特定功能的情况下处理的。

可空支持的语言的主要变化是能够将其写成:

 int? myInt = 1;

您可以通过以下方式在您的类型中实现这一点:

public static implicit operator Nullable<T> (T value)
{
return new Nullable<T>(value);
}

很遗憾,有很多与 Nullable<T> 相关的功能C# 语言和 CLR 可以做到这一点 can't be duplicated in your code .

关于c# - 可空类型和赋值运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10455532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com