我发现可以使用关键字var
作为类名:
public class var // no problem here
{
}
现在,如果我重载隐式强制转换运算符,我可以以一种有趣的方式使用我的类:
namespace MyApp
{
class Program
{
static void Main(string[] args)
{
var x = 1; // var is of type MyApp.var
}
}
public class var
{
public implicit operator var(int i)
{
return new var();
}
}
}
在这种情况下,是否仍然可以以某种方式使编译器推断出类型? This blog entry声明这是不可能的(转到以&#34开头的段落;或者,另一个例子。"),但可能自2009年以来发生了变化?
答案 0 :(得分:2)
如果您命名一个类var
,则无法使用隐式变量声明。
不,因为这可能会破坏在语言中引入var
的新含义之前编写的一些代码。使用var
作为类名的所有遗留代码将不再编译。我最近读到,向后兼容性对C#设计师团队非常重要。