C#:你能把一个名称空间分割成多个文件吗?

C#:你能把一个名称空间分割成多个文件吗?,c#,namespaces,C#,Namespaces,我以前找不到任何帖子来回答我的问题,所以 我不熟悉C#并创建了一些Windows窗体,注意到它同时创建了Program.cs和Form1.cs文件 在这两种情况下,它都以我的程序“Contacts”的名称空间开始 这些是一起编译的,还是编译器仍然可以单独看到它们?命名空间只是类名的前缀,是分离类的方式。它们是单独编译的。是的,您可以。Contacts命名空间将包含跨定义该命名空间的文件定义的所有类 您还可以在同一文件中定义属于不同名称空间的类型。文件和名称空间是完全正交的概念 从C#2.0开始,

我以前找不到任何帖子来回答我的问题,所以

我不熟悉C#并创建了一些Windows窗体,注意到它同时创建了
Program.cs
Form1.cs
文件

在这两种情况下,它都以我的程序“Contacts”的名称空间开始


这些是一起编译的,还是编译器仍然可以单独看到它们?

命名空间只是类名的前缀,是分离类的方式。它们是单独编译的。

是的,您可以。Contacts命名空间将包含跨定义该命名空间的文件定义的所有类

您还可以在同一文件中定义属于不同名称空间的类型。文件和名称空间是完全正交的概念


从C#2.0开始,您还可以在多个文件中拆分类定义。请参阅。

跨多个文件拆分名称空间没有问题,在大多数程序中,您都会这样做

通常,所有的.cs文件都将与一起编译

通过更改此设置,可以查看代码的编译方式:

工具|选项|项目和解决方案|构建和运行


将下拉列表“MSBuild项目生成输出详细信息”更改为更高的设置之一。默认设置为最小值。

简短回答是“是”,您可以将它们拆分为不同的文件。

来自:

namespace关键字用于 声明一个作用域。此命名空间作用域 允许您组织代码并为您提供 创建全局唯一类型的方法

是的,名称空间可以(并且通常)分割到多个代码文件中。这些名称空间中的类是单独编译的,但是(通常,暂时不考虑外部资源)被编译成单个输出文件(即exe或dll)

从一个非常广泛的意义上讲,把它想象成分类洗衣。每个“堆”(一堆颜色、一堆白色等)都是一个名称空间。一堆衣服中的每一件都是一个类或一个接口


希望这有点帮助…

是的,您可以在多个文件中使用相同的名称空间

最容易访问的示例:在VisualStudio中,创建项目后,可以在该项目中创建更多文件。项目中有一个设置,用于指定给新文件的默认名称空间。您的项目将编译为单个dll/exe

您还可以使用现有的名称空间,如
System
。系统类将位于程序集中。NET包含系统内容的主程序集将不会重新编译以包含您添加的内容。但是,要使用新的System.x类,您仍然只需要在类的顶部添加1个
using System
语句


注意:我并不主张将所有代码都放入系统中,这样可以避免以后使用语句。有很强的理由不这样做,但为了回答最初的问题,这样做太过分了。

两者都被编译成一个名称空间,
联系人
。有多个文件和一个名称空间是很正常的

名称空间只是类的包装器。例如,现在您可以有多个名为
句子
的类。
您可以在名称空间
Jail
中创建一个句子,在名称空间
language
中创建一个句子

这样,您将有一个类名的两种表示形式,
Jail.句子
语言学.句子
。两者也有不同的身体

我使用我的名称空间来稍微“组织”代码。我的所有接口都存在于
Projectname.Contracts
中,我的普通代码存在于
Projectname


此Wikipedia页面也很有用:

是的,您可以跨越具有命名空间的文件甚至程序集。还有一个窍门:

在Visual Studio中,如果转到解决方案资源管理器并在csharp项目下创建文件夹,则默认情况下,该文件夹名称将添加到在该文件夹中创建的任何文件的命名空间中

例如:

  • 创建一个新的csharep项目
  • 在项目上单击鼠标右键,然后选择“属性”
  • 将默认名称空间(在“属性”对话框中)设置为“MyProject”
  • 现在在项目中创建一个新类
  • 请注意,该类的命名空间是“MyProject”
  • 现在,右键单击项目并创建一个名为“ASubNamespace”的文件夹
  • 现在右键单击该文件夹并选择添加|类
  • 请注意,您的新类位于MyProject.ASubNamespace命名空间中
    如果您没有将其拆分到不同的文件中,您的名称空间布局可能过于精细。

    更好的类比版本是:堆本身就是文件,但您可以有多堆白色、多堆颜色等,并且它们都与类似类型的堆组合在一起。。。虽然我忘记了C#是否像Java一样要求每个文件有一个类。您可以在一个文件中放入多个类(尽管如果您在一个文件中查找一个不以该类命名的类,则维护会更加困难)。您还可以使用分部类在多个文件中拆分同一个类(这是默认情况下对WPF窗口类执行的操作,隐藏GUI初始化粘合代码)!有人告诉我,
    C#
    没有多重继承,因为它是“问题的根源”,你可以在许多文件上声明相同的名称空间,C#“混合”到相同的文件中。。。您还可以将一个类定义拆分为多个文件?说真的吗?名称空间意味着包含类型,而且由于类型通常在不同的文件中定义,所以在文件之间拆分名称空间是非常明显的。许多主流语言也这样做。至于类,争论更为微妙。如果您被迫将大量成员放入同一类中(例如用于数据访问或集成),拆分这些成员有助于组织代码。这也有助于这样做
    namespace Contacts
    {
       //code here