为什么我们需要不断声明诸如.Net Core中的Use System之类的基本程序包

vol*_*one -5 c# .net-core

在开始学习.Net Core时,我不明白为什么.cs文件无论何时都应作为.Net Core的一部分而需要继续导入系统软件包?

我不必在ColdFusion中导入任何此类内容,因为系统操作和数据库连接等都是框架的一部分。当然,它System是.Net Core的一部分,所以为什么必须继续向Using System我的文件中添加一些基本内容?

Cod*_*ter 5

这就是C#和.NET的工作方式。

如果希望代码使用类型,则在IL(字节码)中将其编译为您需要提及其全名。你不能说String,或者Console因为这些类型不存在 ; 它们的名称分别是System.StringSystem.Console

这就是从头开始设计.NET的方式。使用名称的一部分进行分类。这将转换为“命名空间”,请参见命名空间(C#编程指南)

一个使用指令使得该文件可用一个命名空间需要用到它,所以你不必重复整个名称的一部分:

using System;

class Foo
{
    String Bar;
}
Run Code Online (Sandbox Code Playgroud)

现在,C#编译器检查文件中的所有名称空间,并找到System.String

但这System.String不是一个很好的例子,因为C#具有内置别名:string(lowercase s)。下面的代码是等效的:

class Foo
{
    string Bar;
}
Run Code Online (Sandbox Code Playgroud)

您的部分困惑似乎还源于一种信念,即using指令与引用相同,但这是常见的误解。

默认情况下,如果编译C#项目,则它确实已经引用了核心库(mscorlib,BCL,为其命名),因此代码中的类型可以访问。如果不是这样,编译器将抱怨无法找到System.String。它确实引用了它,因此它知道在哪里可以找到类型以及它的外观,但是您仍然需要添加using指令或使用其全名。

请参见-nostdlib(C#编译器选项)