在 C# 中,如果注释“使用系统”,关键字从何而来
本文关键字:关键字 使用系统 系统 如果 注释 | 更新日期: 2023-09-27 18:31:20
例如,我们知道C#中的"int"类型只不过是一个结构,实际上是System.Int32。如果是这样,那么如果在程序中注释了"using system;",那么int类型应该不能使用。但仍然可以使用 int 类型。我的问题是,这些类型来自哪里?
//using System;
class Program
{
static void Main() {
int x = 0; // it still work, though int is under System namespace, why??
}
}
类型别名如int
、string
、object
等都内置于语言中,不需要using
指令即可使用,这与DateTime
不同。
但是,如果它可以帮助您考虑它,您可以考虑int
是global::System.Int32
的缩写。
class Program
{
static void Main() {
int x = 0;
}
}
翻译为
class Program
{
static void Main() {
global::System.Int32 x = 0;
}
}
事实上,由于类型别名是关键字,您甚至无法像预期的那样重新定义它们:
public class int { } // Compiler error: Identifier expected; 'int' is a keyword
如果出于某种原因想要执行此操作,则必须像这样转义标识符:
public class @int { }
int x = 0; // equivalent to global::System.Int32
@int y = new @int(); // equivalent to global::MyNamespace.@int