让我们忘记为什么我需要这个.
我们可以创建一个名为"class"的类.
下面的代码导致编译错误,因为class是一个reserve关键字.
public class class
{
}
Run Code Online (Sandbox Code Playgroud)
那么有什么黑客或方法可以欺骗C#编译器吗?:)
面试官在我的上一次采访中询问了这个问题,他告诉我这是可能的.
Tim*_*ter 21
你可以使用:
public class @class
{
}
Run Code Online (Sandbox Code Playgroud)
但是你为什么要这样呢?
关键字是预定义的保留标识符,对编译器具有特殊含义.它们不能用作程序中的标识符,除非它们包含@作为前缀.例如,@ if是有效的标识符,但如果不是因为if是关键字.
我从这个答案中学到的是,新的关键词不会全局添加,而只是作为上下文关键词,以避免破坏早期版本中编写的程序.您可以在上面的链接中找到一个列表.
有趣的是,这是有效的(更好的:编译)代码:
public class var
{
public void foo()
{
var var = new var();
}
}
Run Code Online (Sandbox Code Playgroud)
这是另一个:
public class dynamic
{
public void foo()
{
dynamic dynamic = new dynamic();
}
}
Run Code Online (Sandbox Code Playgroud)
但永远不要这样做.它将破坏您使用过var或dynamic之前使用过的其他代码.
另一种选择是通过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
{
}
Run Code Online (Sandbox Code Playgroud)
注意:Console.WriteLine()将打印课程
DotNetFiddle链接在这里.
| 归档时间: |
|
| 查看次数: |
337 次 |
| 最近记录: |