2009-04-14 5 views
2

C#のメソッドへの引数としてArrayListを渡すことはできますか?C#のArrayList

+0

-1。あなたは以前この質問をしました:http://stackoverflow.com/questions/746898/arraylist-in-session –

答えて

18

。しかし、あなたはめったにすべきではありません。最近では、は常にで、List<T>のようなジェネリックタイプを使用する必要があります。

また、メソッドのパラメータを宣言する場合は、可能な限りインターフェイスを使用する価値があります。

public void SomeMethod(ArrayList list) 

その後、誰もがそれはArrayListを使用するを余儀なくされ呼び出す:たとえば、もしあなたがこのような方法を持っていました。彼らはしたい場合でもList<T>を使用することはできません。一方、あなたのメソッドを次のように宣言した場合:

public void SomeMethod(IList list) 

あなたのコードがそれらについて知りません。

+0

私は完全に同意しないJonは、配列は内部的に(プライベートスコープ)使用することができますが、パフォーマンス上の理由から。 –

+0

配列やarraylistsを意味しますか?私はArrayListをパフォーマンス上の理由から内部APIに指定しませんでしたが、それは実際には重要であるという証拠はありません...とはいえ、ジェネリックスが利用可能な場合はArrayListを使用します。 –

+0

リストと一般的なジェネリックスではシリアル化に問題があるかもしれません。ソープWebサービスを使用すると、コレクションは常にこの理由で配列になります。 –

1

はいできます。

5

確かに、なぜ:

public void SomeMethod(ArrayList list) 
{ 
    // your code here 
} 

しかしジョンS.がインターフェースを使用して述べたように代わりにハードコードされたタイプのものが好ましいです。

public void SomeMethod(IList list) 
{ 
    // your code here 
} 

も参照してください:

絶対に
0

任意の型をメソッドの引数として渡すことができます。抽象的なものであろうとインターフェースであろうと値の種類であろうとなにか。

Jon Skeetはインタフェースを使用します。はい、いいですが、小さな落とし穴があります。その方法から使い方まで簡単にナビゲートすることはできません。