struct AccountInfo
{
String Username;
String Password;
}
现在,如果我想要一个Nullable
实例,我应该写一下:
Nullable<AccountInfo> myAccount = null;
但我希望自然地制作struct
Nullable
并且可以像这样使用(不使用Nullable<T>
):
AccountInfo myAccount = null;
答案 0 :(得分:50)
你做不到。 Struct被视为值类型,根据定义,不能为null。使其成为nullable
的最简单方法是使其成为引用类型。
你需要问自己的答案是“为什么这是一个结构?”除非你能想出一个非常可靠的理由,否则不要把它变成一个阶级。关于结构“更快”的论点,实际上是夸张的,因为结构不一定是在堆栈上创建的(你不应该依赖于它),并且“获得”的速度因具体情况而异。
请参阅Eric Lippert关于课程与结构辩论和速度的post。
答案 1 :(得分:40)
当你声明它时,用“?”声明它如果你愿意的话
AccountInfo? myAccount = null;
答案 2 :(得分:15)
简短的回答:让它成为一个班级。
答案很长:这个结构是可变的,结构不应该是,不代表结构总是应该的单个值,并且没有合理的“零”值结构也总是应该,所以它可能不应该是值类型。使它成为一个类(引用类型)意味着它总是可以为null。
注意:使用“never”和“always”等词语时,应使用隐含的“几乎”。