我尝试了以下内容
// no using statements here, not even using System;
class Program
{
static void Main(string[] args)
{
string[] arr = new string[3] { "A" , "B", "C" };
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题很简单,即使没有任何使用语句,编译器如何能够编译它,更具体地说,不应该有编译时错误,因为我正在尝试构建一个数组并且System.Array不可访问?
谢谢.
Eri*_*ert 32
你似乎对什么using意思有误解.一个using指令是用于确定哪些简单的姓名与您在编译时的程序手段.当你说using Foo;这意味着"如果这个程序的文本使用简单名称Bar,并且似乎没有任何Bar名称在使用该名称的范围内,那么请尝试检查是否存在Bar名称空间内部的类型Foo".
您的程序不包含任何简单的名称!(string不是简单的名称;它是该语言的关键字.)因此,不需要任何using指令来解析不存在的简单名称.
using并不意味着"此程序使用需要在此程序集中找到类型的功能",这是您认为它的含义. using指令仅涉及(1)简单的名称解析,以及(2)扩展方法名称解析.
您不是通过名称引用任何命名空间类型,而是您的(Program类).
string并且[]是分别确实等同于System.String和的别名System.Array,但是使用它们不需要将对应的命名空间拉到范围内.
| 归档时间: |
|
| 查看次数: |
640 次 |
| 最近记录: |