Я не могу понять, почему конструктор выполнен с параметром Double[]
?Передача NULL конструктору
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyConsoleApp
{
class Program
{
static void Main(string[] args)
{
D myD = new D(null);
Console.ReadLine();
}
}
public class D
{
public D(object o)
{
Console.WriteLine("Object");
}
public D(double[] array)
{
Console.WriteLine("Array");
}
public D(int i)
{
Console.WriteLine("Int");
}
}
}
Я думаю, потому что первый конструктор принимает параметр ссылочного типа. Первый конструктор с опорным параметром, поскольку null
является значением по умолчанию для ссылочных типов.
Но я не понимаю, почему нет object
, это также ссылочный тип.
Вы просите здесь проблему. Если вы собираетесь использовать перегрузки, включение в качестве общего типа объекта приведет к боли в какой-то момент –
@DavidHeffernan IDK.По большей части я думаю, что метод, вызываемый, является довольно интуитивным. Объект один вызван, если ничего не может быть вызвано. Интуитивно это имеет смысл, потому что наоборот было бы нонсенсом – Cruncher
Это отличный вопрос для интервью! :) –