Подтвердить что ты не робот

Компилятор С# компилирует файлы .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 файла в исполняемый файл и успешно выполняет его.

Может ли кто-нибудь дать мне объяснение по этому поводу?

4b9b3361

Ответ 1

Начало объектов С#: от концепций к коду - Jacquie Barker, Grant Palmer

Рекомендуемое соглашение заключается в том, чтобы прекратить имена файлов исходного кода с помощью расширение .cs, но этого не требуется; исходный файл возможно, можно назвать Person.boo, например

Также из той же книги.

Аналогично, имя исходного файла С# не должно совпадать с именем класса или интерфейса, определенных в этом файле. Например, код, определяющий класс профессора, может быть помещен в файл с именем Blah.cs, но он считал, что хорошая практика для имени исходного файла соответствие имени класса или интерфейса, объявленного в файле.

Ответ 2

Расширение файла не имеет значения для компилятора С#: пока он правильно передает текст вашей программы, компилятор не смотрит на имя или расширение файла. документация для компилятора С# не упоминает требования к именам *.

Сравните это с Java, где важны имена файлов и местоположения. Компилятор Java ожидает только *.java исходных файлов, имена файлов, соответствующие именам общедоступных классов внутри них:

Имена файлов исходного кода должны иметь .java-суффиксы, имена файлов классов должны иметь .class-суффиксы, и оба файла источника и класса должны иметь корневые имена, которые идентифицируют класс.

<ч/" > * Несмотря на то, что компилятор не требует этого, *.cs остается общепринятым соглашением об именах для исходных файлов С#.