Joe*_*Joe 6 c# compiler-errors
我有我的结构:
public struct MyType
{
private string value;
// Methods
// ... (ToString overrided too)
}
Run Code Online (Sandbox Code Playgroud)
如果我把结构放在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)
Run Code Online (Sandbox Code Playgroud)
问题是我将结构放在类库中(在另一个项目中,或从NuGet包中),我从Program.cs中使用它:
MyType a;
Console.WriteLine(a); // No error: prints an empty string
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
据我所知,这是设计使然。在 GitHub 上查看此问题:
对于具有来自不同程序集的私有引用类型字段的结构,不会生成“错误 CS0165:使用未分配的局部变量”
该问题已被关闭并标记为“Resolution-By Design”。
在那一期中,gafter是这样说的:
这是一个非常痛苦但有意的决定。这重复了以前编译器的(有缺陷的)行为。我强烈建议您添加编译器标志
/features:strict以获得正确的、规范要求的(但不向后兼容)行为。
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |