在C#中创建不可为null的类型
本文关键字:null 类型 创建 | 更新日期: 2023-09-27 17:59:27
如何在C#中创建不可为null的值类型,如int、bool等?
是的,这些被称为struct
。
结构是值类型,就像int
、bool
和其他类型一样。
他们有一些相关的规则/建议:(我认为这些是最重要的)
-
当不使用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
(或Book
和using MyNamespace;
)来引用您的结构。