C# .cs 文件名和类名需要匹配吗?

Posted

技术标签:

【中文标题】C# .cs 文件名和类名需要匹配吗?【英文标题】:C# .cs file name and class name need to be matched? 【发布时间】:2011-01-14 13:02:18 【问题描述】:

在 Java 中,文件名必须是该 java 文件中定义的公共类名。 C#有类似的要求吗?我可以有一个 A.cs 文件,里面只定义一个公共 B 类吗?谢谢,

【问题讨论】:

是的,您会惊讶于有多少 C# 项目仍然具有自动创建的 Class1.cs 文件,即使类名已更改... @Adam,Michael 的意思是“不”到“C# 有类似的要求吗?”但是(正确地)“是”到“我可以有一个 A.cs 文件,它只在里面定义一个公共 B 类吗?” @Adam 我想他只是在回答文中的第二个问题,而不是第一个问题 :) 部分类可以共享一切,就像它们在同一个文件中一样? 这并不是问题的真正答案,但我想知道在上述情况下如何以编程方式(通过反射)在文件中获取类的名称? 【参考方案1】:

不,不要求文件名与文件中定义的单个公共类匹配。事实上,包含文件的名称和文件中定义的任何类之间没有必要存在关系。此声明中隐含的是,甚至可以在同一个封闭文件中定义多个类(即使有多个公共类,与 Java 不同)。此外,可以使用partial 关键字在多个文件中定义一个类。

然而,最佳实践是为每个文件定义一个类,并为文件赋予与正在定义的类(或结构等)相同的名称。

【讨论】:

【参考方案2】:

不,没有类似的要求。

是的,你可以这样做。

然而,这被认为是不好的做法。

如果您这样做,Microsoft StyleCop 会警告您,但一切都会正常编译。

【讨论】:

【参考方案3】:

不,在 C# 中,您不必将类命名为与文件相同。

类似地,您可以在文件中拥有多个public 类。 Java 只允许你拥有一个。

这有助于在一个文件中定义一些公共枚举。几个小班的。

但是,在一个文件中投入太多是不好的做法。

【讨论】:

【参考方案4】:

可以有一个包含公共类B 的文件A.cs,但这被认为是不好的做法。

【讨论】:

以上是关于C# .cs 文件名和类名需要匹配吗?的主要内容,如果未能解决你的问题,请参考以下文章

CodeDom 将生成的 .cs 文件保存在哪里?我们可以将此位置更改为其他文件夹吗

uLua Unity工作机制

C#基础知识

C# - 调用异常时如何获取类名和行号

在 IIS 中运行的 C# 网站中添加新的 .cs 文件

java 编译中文件名和类名不一致的问题