微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C# – 检查变量是否初始化[已关闭]

我想检查一个变量是否在运行时被初始化,以编程方式.为了使这个原因不那么神秘,请参阅以下不完整的代码
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或任何.

原文地址:https://www.jb51.cc/csharp/92578.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐