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 文件名和类名需要匹配吗?的主要内容,如果未能解决你的问题,请参考以下文章