C# – 检查变量是否初始化[已关闭]
发布时间:2020-12-15 04:10:35 所属栏目:百科 来源:网络整理
导读:我想检查一个变量是否在运行时被初始化,以编程方式.为了使这个原因不那么神秘,请参阅以下不完整的代码: string s;if (someCondition) s = someValue;if (someOtherCondition) s = someOtherValue;bool sIsUninitialized = /* assign value correctly */;if
我想检查一个变量是否在运行时被初始化,以编程方式.为了使这个原因不那么神秘,请参阅以下不完整的代码:
string s; if (someCondition) s = someValue; if (someOtherCondition) s = someOtherValue; bool sIsUninitialized = /* assign value correctly */; if (!sIsUninitialized) Console.WriteLine(s) else throw new Exception("Please initialize s."); 并完成相关的位. 一个奇怪的解决方案是使用默认值初始化s: string s = "zanzibar"; 然后检查是否更改: bool sIsUninitialized = s == "zanzibar"; 但是,如果someValue或someOtherValue恰好是“桑给巴尔”呢?然后我有一个bug.任何更好的方法? 解决方法
如果编译器知道一个变量尚未初始化,代码将不会编译.
string s; if (condition) s = "test"; // compiler error here: use of unassigned local variable 's' if (s == null) Console.Writeline("uninitialized"); 在其他情况下,如果变量未初始化,则可以使用默认关键字.例如,在以下情况下: class X { private string s; public void Y() { Console.WriteLine(s == default(string)); // this evaluates to true } } documentation表示,默认值(T)将为引用类型赋值为空,对于值类型为0.所以在评论中指出,这真的和检查null一样. 这一切都掩盖了事实,你应该真正地初始化变量,当它们被首次声明时为null或任何. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |