web-dev-qa-db-ja.com

C#にヘッダーファイルがないのはなぜですか?名前空間はすべてを処理しますか?

私は初心者プログラマです。C#でのヘッダーファイルと名前空間の使用法について、誰でも明確に伝えることができますか。

C++では、******.hファイルを使用してライブラリ関数を読み取っていたためです。そして、C#でいくつかのサンプルプログラムを見たときに、それらが欠落していました。理由を教えてください。

C#を使用して、メカニカルCADソフトウェア用のカスタマイズされたツールを開発しています。適切な関数を使用してファイル(CADファイル)を開くたびに、コンパイラは、私が提供する関数名はコンテキストでは使用できません。

そのCADアプリケーションのヘルプファイルを開いたとき、ファイルを開く機能はuf_part.hというヘッダーファイルの下にあります。しかしNXopenという名前空間があります。

Visual Basicでusing NXopenとして名前空間を使用しましたが、それだけでは十分ではありませんか?そのヘッダーファイルも提供する必要がありますか?もしそうならどのように?親切に私を助けてください。

17
Senthur

C#はより「プログラマーに優しい」ものです。同じプロジェクトのファイルを処理するときは、毎回「ヘッダーファイル」を手動で指定する代わりに、名前空間に一致するすべてのプロジェクトファイルを検索します。

これを理解するには、次の手順を実行します。

  1. Visual Studioで新しいプロジェクトを開始します。 (WinFormsまたはコンソールの種類に関係なく)
  2. プロジェクトを右クリックして、新しいクラスを追加します。
  3. メインクラスノートでは、ヘッダーを追加せずに、追加したばかりの新しいクラスを確認できます。

これはどのように行われますか?両方のクラスに同じ名前空間を割り当てるだけです。 .NETエンジンは、これらすべてのクラスをリンクするのに十分なほどスマートです。

さて、external code別のDLLファイルにあるコードを意味するコード)に関しては、そのDLL (Studioで->プロジェクトを右クリック->参照を追加->参照)、使用する予定を指定する必要がありますDLLを追加してsingステートメント上:

using ExternalDllName.ExternalNamespace;

それについてです。 C++とは異なり、.NETは参照されるDLLファイルに一致するものを自動的に検索するため、.hファイルは必要ありません。

22
Shadow Wizard

必要なすべてのメタデータは参照されるアセンブリ自体に含まれているため、.netにはヘッダーファイルなどはありません。

プロジェクトで必要なアセンブリを参照しましたか?また、C#には「関数」のようなものはなく、クラスメソッドのみを呼び出すことに注意してください(つまり、呼び出すオブジェクトまたは静的クラスを指定する必要があります)。

また: C#プログラムの一般構造

8
Serg Rogovtsev

C#やJavaなどの現代言語のコンパイラ別のクラスまたはライブラリクラス。

Cがディスクスペースを発明したとき、メモリとCPUパワーは貴重なリソースであり、このアプローチは不可能でした。異なるソースファイルが同じインターフェイスに準拠していることをコンパイラが確認できるようにするために、ヘッダーファイルが導入されました。 C++が発明されたとき、上記のアプローチは可能だったかもしれませんが、互換性の理由からCのものに固執するように選ばれたと思います。

5
Nicola Musatti