如何在 C# 中创建不可为空的值类型,如 int、bool 等?
问问题
32463 次
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; }
但是,您不能定义别名,例如int
forSystem.Int32
并且需要使用全名MyNamespace.Book
(或Book
with using MyNamespace;
)来引用您的结构。
于 2011-06-15T23:06:57.683 回答