c# - 您可以利用名为 `var` 的类的隐式类型变量吗?

标签 c# var

我刚刚发现可以使用关键字 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声明这是不可能的(转到以“或者,另一个例子”开头的段落),但自 2009 年以来可能发生了一些变化?

最佳答案

简而言之

如果将类命名为 var,则无法使用隐式变量声明。

C# 设计团队不能禁止这样命名类以避免混淆代码吗?

不,因为这可能会破坏在语言中引入 var 的新含义之前编写的一些代码。所有以 var 作为类名的遗留代码将无法再编译。我最近读到,向后兼容性对于 C# 设计人员团队来说非常重要。

关于c# - 您可以利用名为 `var` 的类的隐式类型变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31861561/

相关文章:

C# "discovery"返回类型特性

c# - Quartz.net 简单示例

c# - 使用 IDisposable 从磁盘中删除文件

javascript - 尝试用 var 而不是数字来简化 javascript。我这一切都错了吗?

delphi - 将tmemorystream作为var传递

Javascript 变量

clojure - 如何在本地 repl 中查看 Clojure 局部变量?

c# - Tesseract OCR 文本位置

javascript - ListBoxFor为每个选项元素添加数据属性

Javascript 中的 C# 代码只运行一次!