Компилятор С# компилирует файлы .txt.obj.java
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 файла в исполняемый файл и успешно выполняет его.
Может ли кто-нибудь дать мне объяснение по этому поводу?
Ответы
Ответ 1
Начало объектов С#: от концепций к коду - Jacquie Barker, Grant Palmer
Рекомендуемое соглашение заключается в том, чтобы прекратить имена файлов исходного кода с помощью расширение .cs, но этого не требуется; исходный файл возможно, можно назвать Person.boo, например
Также из той же книги.
Аналогично, имя исходного файла С# не должно совпадать с именем класса или интерфейса, определенных в этом файле. Например, код, определяющий класс профессора, может быть помещен в файл с именем Blah.cs, но он считал, что хорошая практика для имени исходного файла соответствие имени класса или интерфейса, объявленного в файле.
Ответ 2
Расширение файла не имеет значения для компилятора С#: пока он правильно передает текст вашей программы, компилятор не смотрит на имя или расширение файла. документация для компилятора С# не упоминает требования к именам *.
Сравните это с Java, где важны имена файлов и местоположения. Компилятор Java ожидает только *.java
исходных файлов, имена файлов, соответствующие именам общедоступных классов внутри них:
Имена файлов исходного кода должны иметь .java-суффиксы, имена файлов классов должны иметь .class-суффиксы, и оба файла источника и класса должны иметь корневые имена, которые идентифицируют класс.
<ч/" > * Несмотря на то, что компилятор не требует этого, *.cs
остается общепринятым соглашением об именах для исходных файлов С#.