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

本文关键字:null 类型 创建 | 更新日期: 2023-09-27 17:59:27

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

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

是的,这些被称为struct

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

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

  • 当不使用ref或out关键字时,结构是按值传递和赋值的。。。这意味着在将结构赋值或传递给方法时,将复制结构中的所有内容。这就是为什么你不应该制作大的structs。

  • 不能在C#中为结构定义无参数构造函数

  • 结构最好是不可变的,并且没有属性设置器。制作可变结构可能会遇到真正的麻烦。

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

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

7年后,这是可能的

  • 安装包含C#8的.NET Core 3.0
  • 将.csproj文件的语言版本设置为8.0:<LangVersion>8.0</LangVersion>
  • 将属性<NullableReferenceTypes>true</NullableReferenceTypes>(添加到.csproj)

关于他的更多详细信息。这影响了编写代码和您现有的代码:

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

您可以定义一个结构:

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

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

但是,您不能为System.Int32定义像int这样的别名,并且需要使用全名MyNamespace.Book(或Bookusing MyNamespace;)来引用您的结构。