如何使一个“结构”按定义可以为空?
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)意味着它总是可能为空。
注意:使用“永不”和“永远”这样的词应该与暗示的“差不多”一起使用。