如何使一个“结构”按定义可以为空?

struct AccountInfo { String Username; String Password; } 

现在,如果我想要一个Nullable实例,我应该写:

 Nullable<AccountInfo> myAccount = null; 

但是我想使struct Nullable的性质,它可以像这样使用(不使用Nullable<T> ):

 AccountInfo myAccount = null; 

你不能。 结构被视为值types,根据定义不能为空。 最简单的方法是将其设置为引用types。

你需要问自己的答案是“为什么这是一个结构?” 除非你能想出一个真正坚实的理由,否则,不要把它当成一个阶级。 关于结构是“更快”的争论真的被夸大了,因为结构不一定是在堆栈上创build的(你不应该依赖于这个),并且“获得”的速度会根据具体情况而变化。

请参阅Eric Lippert关于类与结构辩论和速度的文章。

当你声明它时,用“?”声明它 如果你更喜欢

帐户信息? myAccount = null;

简短的回答:让它成为一个class级。

漫长的回答:这个结构是可变的,结构不应该是结构,也不代表结构总是应该的单个值,也没有结构总是应该有的明显的“零”值,所以它可能不应该是一个值types。 使它成为一个类(引用types)意味着它总是可能为空。


注意:使用“永不”和“永远”这样的词应该与暗示的“差不多”一起使用。