using System;
class Program {
public static void Main() {
Console.WriteLine("Hello World!");
Console.ReadLine();
}
}
我将文件保存为1.java
,2.obj
和3.txt
。
然后,我使用Visual Studio命令提示符编译文件:csc 1.java csc 2.obj csc 3.txt
令人惊讶的是,它将所有3个文件编译成可执行文件并成功执行。
有人能解释一下这种行为吗?
答案 0 :(得分:19)
文件扩展名与C#编译器无关:只要它正确获取程序文本,编译器就不会查看文件的名称或扩展名。 C#编译器的documentation没有提到命名要求 * 。
将其与Java进行对比,其中文件名和位置很重要。 Java编译器只需要*.java
源文件file names matching the names of public classes inside them:
源代码文件名必须具有.java后缀,类文件名必须具有.class后缀,并且源文件和类文件都必须具有标识该类的根名称。
<小时/> * 即使编译器不需要它,
*.cs
仍然是C#源文件的通用接受命名约定。
答案 1 :(得分:8)
Beginning C# Objects: From Concepts to Code - By Jacquie Barker, Grant Palmer
建议的约定是使用。结束源代码文件名 扩展.cs,但没有要求这样做;源文件 可以想象,可以将其命名为Person.boo,例如
同样来自same book。
同样,C#源文件的名称不必与名称匹配 在该文件中定义的类或接口。例如, 定义教授类的代码可以放在一个名为的文件中 Blah.cs,但它被认为是源文件名的好习惯 匹配文件中声明的类或接口的名称。