我们可以创建名为" class"的课程吗?

时间:2015-03-31 09:47:03

标签: c#

让我们忘记为什么需要这个。

我们可以创建一个名为“class”的类。

下面的代码导致编译错误,因为class是一个保留关键字。

public class class
{

}

那么有什么黑客或方法可以欺骗C#编译器吗? :)

面试官在上次采访中询问了这个问题,他告诉我这是可能的。

3 个答案:

答案 0 :(得分:21)

您可以使用:

public class @class
{ 

}

但你为什么要那样?

C# Keywords

  

关键字是预定义的,具有特殊的保留标识符   对编译器的意义。它们不能用作您的标识符   程序,除非它们包含@作为前缀。例如,@ if是有效的   标识符,但如果不是因为if是关键字。


我从这个答案中学到的是,新的关键词不会被全局添加,而只能作为上下文关键词来避免破坏早期版本中编写的程序。您可以在上面的链接中找到一个列表。

有趣的是,这是有效的(更好的:编译)代码:

public class var
{
    public void foo()
    {
        var var = new var();
    }
}

这是另一个:

public class dynamic
{
    public void foo()
    {
        dynamic dynamic = new dynamic(); 
    }
}

但永远不要这样做。它会破坏您之前使用vardynamic的其他代码。

答案 1 :(得分:8)

另一种选择是通过Unicode

using System;

public class Program
{
    public static void Main()
    {
        cl\u0061ss a = new cl\u0061ss();
        Console.WriteLine(a.GetType().Name);
    }
}

public class cl\u0061ss
{


}

注意Console.WriteLine()将打印

DotNetFiddle链接为here

答案 2 :(得分:-3)

大多数程序员在变量名称的开头使用下划线'_',或者如果它是保留字,例如。

public class _class
{

}

变量声明示例

int _int;