2016-08-18 11 views
-2

C#で#include指令が不要なのはなぜですか?これは、C#がC/C++プリプロセッサ、コンパイラ、リンカなどの本質と比べて、より開発/包括的な/制限的なコンパイルプロセスを持っているという事実によるものですか? (つまり、Visual Studio for C#で開発しています)。C#で#include指令が不要なのはなぜですか?

私は、コンパイルプロセスが追加のクラスを探す場所をどのように知っているのか不思議です。

編集:実際の#include文はC#では必要ないと思いますが、これは意味をなさないためです。しかし、あなたのC#プログラムがインジケータなしで他のクラスの存在をどのように認識しているか、もっと興味があります。 ありがとう、

+1

コンパイルするすべての '.cs'ファイルはコンパイラによって認識されているため、お互いにインクルードする必要はありません。ファイル名は直接コンパイラに渡されます。実際にはC++では '.cpp'ファイルだけが同じですが、その場合はすべてをまとめて処理するリンカです。 – Kyle

+1

ダイレクトアンサー - C#はCではありません。CをプログラミングするときにCを忘れて、質問しません。なぜですか? (**あなたが**聞くことができるそのような質問のどれくらいをイメージングするか)。より具体的な答え - C#はHファイルを使用せず、ファイルを見つけるための '#include 'を探すのではなく、プロジェクトファイルと' using'を使ってクラスを探す場所を定義します。詳細については、[this](http://stackoverflow.com/q/2134017/1997232)を参照すると便利です。 – Sinatr

+0

@Sinatr C++で 'using'キーワードを使用したことは、型解決に使用されていることです。それはC#で似ているようです。しかし、 'using'キーワードは、クラス内で実際にアクセスできるようにするためのコードを実際に持っている限り、何もしません。 C++では、#includeディレクティブを使用してクラス定義、関数プロトタイプなどを持ち込み、コンパイラにどこかで定義する必要のあるものを探すよう通知します。しかし、C#では、IDEがこれを行いますか?したがって、#includeディレクティブは必要ありません。 – Izzo

答えて

1

C#に類似しています。この例では、名前空間がクラスにアクセスするために私ができるようになる

using System.Collections.Generic 

:など他のライブラリ内のクラスを使用するには、アセンブリへの参照を追加して、このような参照の名前が続くusingキーワードを使用する必要がありますDictionary<TKey, TValue>など

hereを参照してください。

+0

「アセンブリへの参照を追加する必要がありますか?もし私が間違っていれば私を訂正してください。しかし、 'using'キーワードを使わずにそれらのクラスすべてにアクセスすることができます。名前を完全に指定する必要があります(System.Colelctions.Generic.Dicitionary )しかし、私はあなたのソースコードを他のクラスに気づかせる方法については混乱しています。これを行うには、「アセンブリへの参照を追加する」ことを確認しますか?この参照は何を作るのですか? IDEですか? – Izzo

+0

@Teague - Visual Studioのプロジェクトの下に「References」という見出しがあります。それを右クリックし、[参照の追加]をクリックします。これにより、使用するクラスを含むアセンブリへの参照を追加できます。 IDEによって参照が作成されます。これが追加されたら、 'using'キーワードを追加する必要はなく、完全に指定された名前を代わりに使うこともできますが、明らかにそれは面倒です。 – sr28

+0

ありがとうsr28。これが私が手に入れようとしていたものです。 C#で#includeディレクティブを使用する必要がないのは、ソースファイル自体ではなく、IDEの設定によって処理されるためです。 – Izzo

関連する問題