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

前端之家收集整理的这篇文章主要介绍了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.f2er.com/csharp/92578.html

猜你在找的C#相关文章