2016-12-08 12 views
-1

私はクラスArrayListからメソッドAddRangeを使用して、私は例が見つかりました:インターフェイスいるICollectionとAddRange C#/。NET

ArrayList myAL = new ArrayList(); 
Queue myQueue = new Queue(); 
myQueue.Enqueue("jumped"); 
myQueue.Enqueue("over"); 
myQueue.Enqueue("the"); 
myQueue.Enqueue("lazy"); 
myQueue.Enqueue("dog"); 

// Copies the Queue elements to the end of the ArrayList. 
myAL.AddRange(myQueue); 

AddRangeはタイプICollectionのパラメータを持っていますが、一例では、私はおそらくので(Queueクラスを与えることができますQueueクラスはインターフェイスICollectionから継承されています)。 AddRangeのコールで何が起きているのか、インターフェイスタイプICollectionQueueクラスタイプをコピーしてください。

+1

私はあなたの質問を理解していません。何が起こるかは、 'ICollection'の要素があなたの新しいリストに1つずつ追加されるということです。 – HimBromBeere

+1

サイドノート: 'ArrayList'をもう使用しないでください。一般的な' List 'を使用してください。 –

+0

私はこの機能を理解しています。しかし、ICollectionインタフェースのQueueオブジェクト(myQueue)をコピーすると、ヒープまたはスタックはどうなりますか? AddRangeがICollectionインターフェイスを予期している場合、どのようにAddRangeのQueueクラスをparamerとして使用できますか? – leoleo

答えて

0

AddRangeのパラメータとしてタイプQueueを使用できます。また、パラメータとしてICollectionが必要な場合もあります。 QueueICollectionから継承されています。つまり、ICollectionにはすべてのメソッド(およびプロパティ)が含まれているため、QueueはまだICollectionです。

もう一つの例:

interface IBear 
{ 
    void Hunt(); 
    void Sleep(); 
    void Eat(); 
} 

class Grizzly : IBear 
{ 
    public int Size { get; set; } 
    public int Weight { get; set; } 

    public void Eat() 
    { 
     // 
    } 

    public void Hunt() 
    { 
     // 
    } 

    public void Sleep() 
    { 
     // 
    } 
} 

class BearCave 
{ 
    private ArrayList bears; 
    public BearCave() 
    { 
     bears = new ArrayList(); 
    } 

    public void AddBear(IBear bear) 
    { 
     bears.Add(bear); 
    } 
} 

メインプログラム:あなたはインターフェイスIBearIBearから継承されたクラスGrizzlyを、持っているこの小さなプログラムで

class Program 
{ 
    static void Main(string[] args) 
    { 
     BearCave cave = new BearCave(); 
     Grizzly grizzly = new Grizzly() { Size = 2, Weight = 150 }; 
     cave.AddBear(grizzly); 
    } 
} 

BearCaveクラスとAddBearメソッドがあり、これにはIBearが必要です。 GrizzlyはまだBearIBear)であるので、あなたが、BearCaveGrizzlyを追加することができ、メイン・プログラムの開発に

+0

ありがとうございます。私の質問は:AddRangeメソッドにオブジェクトを渡すと、ヒープとスタック上で何が起こるのですか?.NETがこのオブジェクトをICollection型でどのように変換するのか?ICollection型でオブジェクトを型変換する方法は何ですか? – leoleo

+0

あなたは何を意味するのか分かりません。 'ICollection'が期待される場合に' Queue'を使うことができるか、 'AddRange'メソッドがどのようにあなたのキューの項目をリストに追加するのか知りたいのですか? – daniel59

関連する問題