Visual Studio C# 命名空间和程序集
Visual Studio C# Namespaces And Assemblies
我无法理解命名空间和程序集之间的区别。
假设我打开 Visual Studio,然后创建一个新项目。我将项目命名为“项目 A”。解决方案资源管理器将如下所示:
现在,据我所知,“解决方案 'Project_A'(1 个项目)”是程序集,其正下方的“Project_A”是第一个命名空间。现在,我知道我可以添加多个具有不同 classes 的“嵌套”命名空间。所以我可以创建另一个名为 X 的 class,然后在“Project_A”中创建一个新文件夹,这样一个新的命名空间将被称为“MainClasses”并添加 classes A 和 B在那里,它看起来像这样:
现在,如果我没记错的话:我的程序集“Project_A”具有命名空间“Project_A”。命名空间“Project_A”包括一个名为 X 的 class 和另一个带有 classes A 和 B 的命名空间。
现在,如果我转到“解决方案 'Project_A'(1 个项目)”并单击“添加”->“新建项目”,我将创建一个名为“Project_B”的新命名空间,并将另一个 class 添加到名为 Y 的新命名空间,我现在将拥有:
将包含命名空间“Project_A”和“Project_B”的程序集“Project_A”,它将如下所示:
如果我错了,有人可以纠正我并告诉我正确的方法吗?那么在 visual studio 中使用 c# 时,命名空间和程序集之间的确切区别是什么?当然,如果可以的话,显示一些屏幕截图将是最好的。谢谢
程序集是 exe
(可执行文件)或 dll
(动态 link 库)并且它是软件主要“组件”(不是 OOP 组件意义上的或控制)。有时命名为 package.
What exactly is an Assembly in C# or .NET?
https://docs.microsoft.com/dotnet/standard/assembly/
命名空间是一种代码组织功能。
https://www.tutorialspoint.com/csharp/csharp_namespaces.htm
https://docs.microsoft.com/dotnet/csharp/programming-guide/namespaces/
一个类似于 partition 的 assembly 可以包含一个或多个 namespaces像 文件夹.
将程序集添加到项目的引用后,您可以使用文件开头的 using
指令或直接在代码中指定完全访问权限来访问其所有命名空间。
例子
程序集 System.dll
包含多个命名空间,例如 System
和 System.IO
以及 System.Threading
等等。
using System.IO;
var lines = File.ReadAllLines(...);
或者:
var lines = System.IO.File.ReadAllLines(...);
...
这两个概念没有关系。只有默认情况下,您的初始命名空间才会采用您的项目名称。
默认情况下,您的每个项目都包含全局命名空间和您自己的命名空间。您可以毫无问题地将命名空间的默认名称重命名为任何您想要的名称。
程序集:
Assemblies form the fundamental units of deployment, version control, reuse, activation scoping, and security permissions for .NET-based applications. An assembly is a collection of types and resources that are built to work together and form a logical unit of functionality. Assemblies take the form of executable (.exe) or dynamic link library (.dll) files, and are the building blocks of .NET applications. They provide the common language runtime with the information it needs to be aware of type implementations.
命名空间:
Namespaces have the following properties:
They organize large code projects.
They are delimited by using the . operator.
The using directive obviates the requirement to specify the name of the namespace for every class.
The global namespace is the "root" namespace: global::System will always refer to the .NET System namespace.
项目的命名空间在项目属性中设置。它默认设置为程序集名称,class 文件在创建时继承此名称,但您可以更改为您喜欢的任何名称。如果您添加一个文件夹并在其中放置一个文件,则文件夹名称将附加到父(对于第一个文件夹,这是程序集)命名空间。同样,您可以将其更改为任意名称。
我无法理解命名空间和程序集之间的区别。 假设我打开 Visual Studio,然后创建一个新项目。我将项目命名为“项目 A”。解决方案资源管理器将如下所示:
现在,据我所知,“解决方案 'Project_A'(1 个项目)”是程序集,其正下方的“Project_A”是第一个命名空间。现在,我知道我可以添加多个具有不同 classes 的“嵌套”命名空间。所以我可以创建另一个名为 X 的 class,然后在“Project_A”中创建一个新文件夹,这样一个新的命名空间将被称为“MainClasses”并添加 classes A 和 B在那里,它看起来像这样:
现在,如果我没记错的话:我的程序集“Project_A”具有命名空间“Project_A”。命名空间“Project_A”包括一个名为 X 的 class 和另一个带有 classes A 和 B 的命名空间。
现在,如果我转到“解决方案 'Project_A'(1 个项目)”并单击“添加”->“新建项目”,我将创建一个名为“Project_B”的新命名空间,并将另一个 class 添加到名为 Y 的新命名空间,我现在将拥有: 将包含命名空间“Project_A”和“Project_B”的程序集“Project_A”,它将如下所示:
如果我错了,有人可以纠正我并告诉我正确的方法吗?那么在 visual studio 中使用 c# 时,命名空间和程序集之间的确切区别是什么?当然,如果可以的话,显示一些屏幕截图将是最好的。谢谢
程序集是 exe
(可执行文件)或 dll
(动态 link 库)并且它是软件主要“组件”(不是 OOP 组件意义上的或控制)。有时命名为 package.
What exactly is an Assembly in C# or .NET?
https://docs.microsoft.com/dotnet/standard/assembly/
命名空间是一种代码组织功能。
https://www.tutorialspoint.com/csharp/csharp_namespaces.htm
https://docs.microsoft.com/dotnet/csharp/programming-guide/namespaces/
一个类似于 partition 的 assembly 可以包含一个或多个 namespaces像 文件夹.
将程序集添加到项目的引用后,您可以使用文件开头的 using
指令或直接在代码中指定完全访问权限来访问其所有命名空间。
例子
程序集 System.dll
包含多个命名空间,例如 System
和 System.IO
以及 System.Threading
等等。
using System.IO;
var lines = File.ReadAllLines(...);
或者:
var lines = System.IO.File.ReadAllLines(...);
...
这两个概念没有关系。只有默认情况下,您的初始命名空间才会采用您的项目名称。
默认情况下,您的每个项目都包含全局命名空间和您自己的命名空间。您可以毫无问题地将命名空间的默认名称重命名为任何您想要的名称。
程序集:
Assemblies form the fundamental units of deployment, version control, reuse, activation scoping, and security permissions for .NET-based applications. An assembly is a collection of types and resources that are built to work together and form a logical unit of functionality. Assemblies take the form of executable (.exe) or dynamic link library (.dll) files, and are the building blocks of .NET applications. They provide the common language runtime with the information it needs to be aware of type implementations.
命名空间:
Namespaces have the following properties:
They organize large code projects.
They are delimited by using the . operator.
The using directive obviates the requirement to specify the name of the namespace for every class.
The global namespace is the "root" namespace: global::System will always refer to the .NET System namespace.
项目的命名空间在项目属性中设置。它默认设置为程序集名称,class 文件在创建时继承此名称,但您可以更改为您喜欢的任何名称。如果您添加一个文件夹并在其中放置一个文件,则文件夹名称将附加到父(对于第一个文件夹,这是程序集)命名空间。同样,您可以将其更改为任意名称。