【问题标题】:Having two using static directives that has property with same name有两个 using 具有相同名称的属性的静态指令
【发布时间】:2016-10-01 20:18:20
【问题描述】:

我有类似这样的 C#6 代码:

Guid guid = Guid.Empty;
string value = string.Empty;

我想开始使用using static 指令并将其更改为类似

using static System.Guid;
using static System.String;
// ...
Guid guid = Empty;
string value = Empty;

但这只会导致两个错误

错误 CS0229 'Guid.Empty' 和 'string.Empty' 之间的歧义

为什么编译器不能决定我要使用Empty

【问题讨论】:

  • var guid = Empty; 现在将自己置于编译器的位置:)
  • @Selman Genç 是的 var 不知道该使用哪个。但如果我指定Guidstring?为什么不呢?
  • var 是一个完全不同的故事。当您使用 var 时,类型取自表达式的右侧(这就是为什么您不能只做var a; - 它不会编译)如果它是已知的而不是动态操作的结果。但在你的情况下,编译器必须推断的不是类型而是类。

标签: c# c#-6.0


【解决方案1】:

因为这不是 C# 编译器的设计方式。尝试猜测您的意思在您所展示的简单情况下看起来很简单,但在其他情况下会出现问题。

例如:

var value = Empty;
string s = Empty.ToString();
F(Empty.SomeMethod());

【讨论】:

  • 嗯,在简单的情况下它会有意义。如果你真的不清楚你想要哪一个 - 仍然会出现错误。
猜你喜欢
  • 2013-12-03
  • 2014-11-12
  • 2018-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-11
  • 1970-01-01
相关资源
最近更新 更多