在C#中创建不可为空的类型

时间:2011-06-15 23:04:48

标签: c# non-nullable

如何在C#中创建不可为空的值类型,如int,bool等?

3 个答案:

答案 0 :(得分:51)

是的,这些被称为struct

结构是值类型,就像intbool和其他类似。

他们有一些与他们相关的规则/建议:(我认为这些是最重要的)

  • 当不使用ref或out关键字时,传递结构并按值分配结构...这意味着在分配或传递给方法时,您在结构中放置的所有内容都将被复制。这就是为什么你不应该制作大型结构。

  • 您无法在C#

  • 中为结构定义无参数构造函数
  • 结构体最好是不可变的,并且没有属性设置器。你可以通过制作可变结构来解决真正的麻烦。

可以在Microsoft文档中找到有关结构的其他规则。

至于不可空的引用类型 ...这是不可能。您必须手动检查代码中的空值。

答案 1 :(得分:11)

您可以定义struct

  

结构类型是一种值类型,通常用于封装一小组相关变量,例如矩形的坐标或库存中项目的特征。以下示例显示了一个简单的结构声明:

public struct Book
{
    public decimal price;
    public string title;
    public string author;
}

但是,您无法为int定义System.Int32之类的别名,并且需要使用全名MyNamespace.Book(或Bookusing MyNamespace;一起引用)你的结构。

答案 2 :(得分:7)

7年后,现在有可能

  • 安装包含C#8的.NET Core 3.0。
  • 将.csproj文件的语言版本设置为8.0:8.0。
  • 将属性添加为true(向您的csproj)

关于他的更多详细信息会影响此处的代码编写和您现有的代码:

https://praeclarum.org/2018/12/17/nullable-reference-types.html