我有我的结构:
public struct MyType
{
private string value;
// Methods
// ... (ToString overrided too)
}
如果我将结构放在Program.cs或其他File.cs中,并且我创建了一个变量MyType
(我的结构)并尝试使用它,结果是一个明显的错误:
CS0165使用未分配的局部变量
示例:
MyType a;
Console.WriteLine(a); // Error: Use of unassigned local variable 'a'
MyType b = new MyType();
Console.WriteLine(b); // Prints the default value (an empty string)
问题是当我将结构放在类库中时(或者在另一个项目中,或者从NuGet包中),我从Program.cs中使用它:
MyType a;
Console.WriteLine(a); // No error: prints an empty string
为什么会这样?
答案 0 :(得分:2)
据我所知,这是设计上的。在GitHub上看到这个问题:
此问题已经关闭并标记为"解决方案 - 按设计"。
在该问题中,gafter有这样的说法:
这是一个非常痛苦但有意的决定。这复制了先前编译器的(错误)行为。我强烈建议您添加编译器标志
/features:strict
以获得正确的,规范要求的(但不是向后兼容的)行为。
答案 1 :(得分:-1)
当您从类库中调用Console.WriteLine
时,除非您运行的项目支持控制台(命令提示符),否则它将不执行任何操作。对于不支持调试的环境中Debug.WriteLine
,它是相同的。