5

C#についての初心者の質問です。

すべてのプログラムに、次のようないくつかの名前空間を含める必要があります。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

なぜ私は含める必要があります:

using System.Collections.Generic;
using System.Linq;
using System.Text;

...最初のものに含まれているため:

using System;

前もって感謝します!

4

8 に答える 8

8

ネストされた名前空間は親の名前空間に含まれていないためです。詳細については、ディレクティブのドキュメントの使用を参照してください

usingディレクティブでは、指定した名前空間にネストされている名前空間へのアクセスは許可されません。

于 2012-11-27T11:43:53.550 に答える
2

SystemSystem.Textは2つの異なる名前空間です。それは、プログラマーとしての私たちがそれに入れたセマンティクスSystem.Textの一部のようです。Systemプラットフォームビューからネストされた名前空間のようなものはありません。

しかし、そうではなかったとしても、

namespace MySystem{
   namespace Foo{
       class Bar {...}
   }

   class Bar{...}
}

using MySystem;
class MyClass{
    private Bar _myBar; //Which one is it MySystem.Foo.Bar or MySystem.Bar?     
}
于 2012-11-27T11:45:12.737 に答える
2

SystemSystem.IO名前空間は異なります。

オブジェクトモデルでは、「サブネームスペース」を親子関係として扱うことができます。「Car」オブジェクトにアクセスできる場合は、車のホイールにアクセスできることを意味するわけではありません。

Systemは、数百のネストされた名前空間と数千のクラスを含む巨大な名前空間です。モジュールのどの部分に関心があるかを示すために、ネストされたすべての名前空間を個別に指定する必要があります。

于 2012-11-27T11:44:47.920 に答える
2

これらのクラスを持つこれらの名前空間を想像してみてください(姓はクラスです):

  • A.B.Class1
  • A.Class2

これで、次のようになります。

using A -Class2を直接参照できますが、Class1は参照できません。

using A.B-Class1を直接参照できますが、Class2は参照できません。

コード内で両方のクラスを直接参照する場合は、両方を使用する必要があります。

于 2012-11-27T11:47:52.240 に答える
0

あなたは初心者なのでnamespace、C#とpackageJavaでは1つのことを明確にしましょう。それらをマージする必要はありません。

于 2012-11-27T11:44:23.023 に答える
0

.net のすべてのクラスが 1 つの大きなコンテナー内にあるわけではありません。そうすると、クラス名が衝突する可能性が高くなり、そもそも見栄えがよくありません。名前空間は、ライブラリをクリーンに保ち、より意味のあるものにしようとするコンテナーです。 FTP クラスと String クラスを 1 つのコンテナーの下にまとめることは、論理的に意味がありません。これらは 2 つの異なることを行うため、別々のコンテナーに保管する必要があります。

また、名前空間をネストすることもできます。名前空間は、クラスなしで別の名前空間だけを持つことができます。そのため、クラスにアクセスするには、使用する前に完全な名前空間を修飾する必要があります。

あなたのケースでは、異なるコンテナにある異なるクラスを使用しています。したがって、それらが必要な場合は、名前空間でそれらを修飾する必要があります。

于 2012-11-27T11:52:52.863 に答える
0

明確に理解できるように、例を追加しました。

親の名前空間を呼び出して子の名前空間にアクセスすることはできません

Namespace Main  //only code and classes are accessible
{
  //code for Main Namespace
  Namespace subMain     //only code and classes are accessible
  {
     //code for subMain
     Namespace verySubMain  //only code and classes are accessible
     {
        //code for verySubMain
     }
     Namespace otherVerySubMain  //only code and classes are accessible
     {
        //code for otherVerySubMain
     }
  }
}
于 2012-11-27T11:53:11.117 に答える
-1

using ステートメントを使用せずに System.Text のクラスにアクセスする場合は、使用するたびに Text."クラス/関数の名前" を指定する必要があります。

このようにして、「クラス/関数の名前」を呼び出すことができます。

あなたが初心者かどうかはわかりませんが、それが私が説明できる最も簡単な方法です。

于 2012-11-27T11:52:17.097 に答える