49

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

4

3 回答 3

58

是的,这些被称为struct.

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

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

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

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

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

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

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

于 2011-06-15T23:06:28.217 回答
22

7 年后,这现在是可能的

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

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

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

于 2019-01-10T19:04:26.897 回答
14

您可以定义一个结构

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

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

但是,您不能定义别名,例如intforSystem.Int32并且需要使用全名MyNamespace.Book(或Bookwith using MyNamespace;)来引用您的结构。

于 2011-06-15T23:06:57.683 回答