У меня есть следующий код. Почему он всегда идет на метод «взять (ICollection a)»? Я думаю, что объекту он должен быть LinkedList или HashSet, поэтому он должен вызывать метод двух других меток.ICollection [] в сигнатуре метода
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)
{ }
}
И почему это помечено Java? –
'' '' 'ICollection' Почему вы ожидаете динамической отправки? Метод вызова определяется во время компиляции. –
@RohitJain Java и C# ведут себя одинаково, поэтому я пометил также Java – Helic