次のコードがあります。常に「take(ICollection a)」メソッドに行くのはなぜですか? それ自体のオブジェクトはLinkedListまたはHashSetであるべきだと思うので、他の2つのtakeメソッドを呼び出す必要があります。
class Program
{
static void Main(string[] args)
{
Program p = new Program();
ICollection<String>[] ary = { new LinkedList<String>(), new HashSet<String>() };
foreach (ICollection<String> a in ary)
{
p.take(a);
}
for (int i = 0; i < ary.Length; i++)
{
p.take(ary[i]);
}
}
public void take(HashSet<String> a)
{ }
public void take(LinkedList<String> a)
{}
public void take(ICollection<string> a)
{ }
}