17
using System;
class Program {
    public static void Main() {
        Console.WriteLine("Hello World!");
        Console.ReadLine();
    }
}

ファイルを1.java2.objおよびとして保存します3.txt。次に、Visual Studio コマンド プロンプトを使用してファイルをコンパイルします。csc 1.java csc 2.obj csc 3.txt

驚くべきことに、3 つのファイルすべてを実行可能ファイルにコンパイルし、正常に実行します。

誰かがこの動作について説明してもらえますか?

4

2 に答える 2

19

ファイル拡張子は C# コンパイラには関係ありません。プログラムのテキストを正しく取得する限り、コンパイラはファイルの名前や拡張子を確認しません。C# コンパイラのドキュメントには、命名要件については言及されていません*

これを、ファイル名と場所が重要な Java と比較してください。Java コンパイラは、ファイル名が内部のパブリック クラスの名前と一致する*.javaソース ファイルのみを想定します。

ソース コード ファイル名には .java サフィックスが必要であり、クラス ファイル名には .class サフィックスが必要であり、ソース ファイルとクラス ファイルの両方にクラスを識別するルート名が必要です。


*コンパイラはそれを必要としませんが、*.csC# ソース ファイルの一般的に受け入れられている命名規則のままです。

于 2012-12-11T04:33:21.640 に答える
8

C# オブジェクト入門: 概念からコードまで - Jacquie Barker、Grant Palmer 著

推奨される規則は、ソース コード ファイル名を拡張子 .cs で終了することですが、そうする必要はありません。たとえば、ソース ファイルの名前は Person.boo である可能性があります。

こちらも同書より。

同様に、C# ソース ファイルの名前は、そのファイル内で定義されているクラスまたはインターフェイスの名前と一致する必要はありません。たとえば、Professor クラスを定義するコードは Blah.cs という名前のファイルに配置できますが、ソース ファイル名をファイル内で宣言されているクラスまたはインターフェイスの名前と一致させることをお勧めします。

于 2012-12-11T05:00:00.837 に答える