2012-03-05 12 views
2

シンプルな質問がありますが、シンプルに見えますが、理由を探して戻ってきませんでした。クラスは基本クラスの名前空間のプロパティを使用できます

  1. 基本クラスに名前空間をインポートした場合、派生クラスすべての名前空間(クラス、オブジェクト、メソッドなど)のプロパティを使用できますか?

は、例えば

using System.Collections.Generic; 
public class MyBase 
{ 
    public string GetName() 
     { 
      List<string> ss = new List<string>(); 
      return ss.ToString(); 
     } 
} 

iはアウトが名前空間を持つ私のベースから分類すべての子にListプロパティを使用することはできますか?

public class myChild : MyBase 
    { 
     public string GetName() 
     { 
      List<string> ss = new List<string>(); 
      return ss.ToString(); 
     } 
    } 

のような理由ではない場合は?また、部分的なクラスで気づいたのと同じ振る舞いをしています。

+1

上記のコードを試しましたか?それはコンパイルしましたか?コンパイラから警告またはエラーがありましたか?コードがコンパイルされた場合、生成されたアセンブリ関数は期待どおりに機能しましたか?あなたは、「私が部分クラスで気づいたのと同じ行動」と言います。それはどのような行動ですか?行動に関するいくつかの質問をしましたが、あなたが観察した行動は説明していません。 – phoog

答えて

3

親型は、名前空間をインポートファイルに定義されている場合は、以下の

を求めているようですが、聞こえる私は親から派生した場合、その名前空間を再インポートする必要がありますか?

もしそうなら、答えははいです。子タイプは、親タイプが定義されているファイルにインポートされた名前空間を継承しません(部分的にpartialタイプの型が複数のファイルに定義されているため、名前空間が競合しています)。すべてのファイルは、それ自身のインポートセットに基づいてコンパイルされます。

2

usingステートメントは実行可能コードではなく、クラスまたはクラスのメンバーには適用されません。むしろ、型名を解決する方法についてコンパイラに情報を与えます。 usingステートメントは、そのステートメントを含むファイルのスコープ内にのみあります。さらに、名前空間宣言の内部にある場合、その名前空間宣言内では有効です。ファイルに複数の名前空間宣言を持つことが可能です

注:DirectoryInfoへの参照が解決できない

namespace N 
{ 
    using System.IO; 
    partial class C 
    { 
     public FileInfo SomeFileInfo { get; set; } 
    } 
} 

namespace N 
{ 
    partial class C 
    { 
     public DirectoryInfo SomeDirectoryInfo { get; set; } 
    } 
} 

、その時点でスコープ内にないusing System.IO;ので。

+0

ランダムではなく、usingステートメントはPDBに表示されます。デバッグを容易にするために配置されています – JaredPar

関連する問題