7

これはばかげた質問ですが、Google に尋ねる専門用語がわかりません。

Javaですべてのサブクラスをインポートしたい場合、次のようなものを使用します

java.util.*

そして、すべてのユーティリティがインポートされます。

まず、Google をより効果的に使用できるように、C# で行っていることの適切な用語を教えてください。名前空間をインポートしていますか? 図書館?サブクラス?(私はこれが初めてだと言えますか?)

第二に、私はここにいますが、これは C# でどのように達成されますか?

PS-stackOverflowが投げた関連するすべての質問をクリックして、答えがポップアップするかどうかを確認しました。運がない。私が探しているものを説明する言葉がありません。例はうまくいくはずですが...専門用語を私に説明するのに少し時間をかけることができる人、またはおそらく単に私にできることを指摘できる人なら誰でも(一言で言えば、私は長期にわたって数冊の本を持っています)すごい。

4

5 に答える 5

21

まず、アセンブリ参照名前空間を区別しましょう。

アセンブリは、C# プロジェクトで参照を追加するものであり、必要な実際のクラスを含むライブラリであり、通常は DLL ファイルとして見つかります。.net フレームワークにはそのようなアセンブリが多数含まれており、Visual Studio はプロジェクトで最も一般的に使用されているものを参照しようとします (たとえば、WinForms プロジェクトの場合は、への参照が自動的に追加されますSystem.Drawing.dll)。

名前空間は、アセンブリ内のクラスの論理パーティションです。

プロジェクトでアセンブリを参照すると、完全な名前を指定すると、すべての名前空間のすべてのクラスを使用できるようになります。

ここでusingディレクティブの出番です。これは、常に非常に長い名前を記述する必要がないための単純な構文糖衣です。

たとえば、プロジェクトがSystem.Drawing.dllアセンブリを参照すると仮定すると、このアセンブリのクラスをその完全な名前を使用して修飾する必要があります。たとえば、

System.Drawing.Imaging.BitmapData

これは面倒でコードが肥大化するため、.csファイルを

using System.Drawing.Imaging;

名前だけを使用してクラスをインスタンス化できますBitmapData。これは、プロジェクト全体ではなく.cs、ディレクティブを追加したファイルにのみ当てはまります。また、 1 つの名前空間がすべてのネストされた名前空間を取り込めないことusingに注意することも重要です。それぞれを個別に行う必要があります。usingusing

于 2012-12-27T19:51:44.513 に答える
7

Google-fu をブラッシュアップする必要があります

http://www.harding.edu/fmccown/java_csharp_comparison.html#namespaces

于 2012-12-27T19:51:56.603 に答える
4

名前空間のインポート/参照/使用と呼ぶことができます。

このような言語機能は、c# では使用できません。

簡単な説明: 名前空間は複数のライブラリに分散できます。そのため、名前空間を使用すると、複数の参照アセンブリから参照される場合があります。

于 2012-12-27T19:51:42.843 に答える
2

と呼びnamespace、キーワードでインポートしusingます。例えば:

using System;

このステートメントにより、その名前空間に存在するすべてのクラスを参照できます。ただし、宣言されたサブネームスペース内のクラスを参照することはできませんnamespace。それぞれnamespace個別に宣言する必要があります。例えば:

using System;
using System.Text;

もちろん、usingディレクティブを指定しているプロジェクトに適切な参照を追加する必要があります。

于 2012-12-27T19:52:18.087 に答える
0

.Net 内では、最初に、インポートする名前空間を含む参照アセンブリがあることを確認する必要があります。その参照が存在すると、'using' ディレクティブを使用してその名前空間をクラスに取り込み、すべてのオブジェクト名を完全に修飾する必要がなくなります。このディレクティブの詳細については、MSDN を参照してください。

私が誤解した場合はお知らせください。正しい方向に向けられるよう最善を尽くします。

于 2012-12-27T19:51:49.470 に答える