30

C# でのヘッダー ファイルと名前空間の使用法について明確に説明できる人はいますか?

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

C# を使用して、CAD アプリケーション用のカスタム ツールを開発しています。適切な関数を使用してファイル (CAD ファイル) を開くたびに、指定した関数名がコンテキストで使用できないというエラーがコンパイラから返されます。ここで、文脈とはどういう意味ですか?

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

名前空間をusing NXOpenVisual Basic と同じように使用しましたが、それで十分ではないでしょうか? そのヘッダファイルも提供する必要がありますか? もしそうなら、どのように?

4

3 に答える 3

31

C# はより「プログラマーフレンドリー」です。同じプロジェクトのファイルを扱う場合、毎回「ヘッダー ファイル」を手動で指定する代わりに、名前空間に従ってすべてのプロジェクト ファイルを調べて一致を探します。

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

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

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

さて、別のDLLファイルにあるコードを意味する外部コードに関しては、トリックはそのDLLへの参照を追加することです(Studioで->プロジェクトを右クリック->参照を追加->参照)次に、あなたを指定する必要があります上にusing ステートメントを追加して、その DLL を使用します。

using ExternalDllName.ExternalNamespace;

それはそれについてです。.hC++ とは異なり、.NET は参照先の DLL ファイルを自動的に検索して一致するファイルを探す必要がないため、ファイルを用意する必要はありません。

于 2012-08-05T07:57:17.850 に答える
12

There's no such thing as header file in .net, because all needed metadata is contained in referenced assembly itself.

Have you referenced needed assembly in you project? Also please mind that there's no such thing as "function" in C#, only class methods (which means that you have to specify object or static class in you call).

Also: General Structure of a C# Program

于 2012-08-05T07:47:59.747 に答える
10

C# や Java などの最新の言語のコンパイラは、コンパイルされたファイル内に含まれるクラスとメソッドに関する情報を格納し、この情報を使用して、あるソース ファイルから別のソース ファイルまたはライブラリ クラスに対して行われた呼び出しの正確性を確認できます。

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

于 2012-08-05T07:58:30.267 に答える