ArrayList
и string
являются типами nullable
. Это смущает компилятор.
Если у вас есть два конструктора, скажите один, который принимает обнуляемый тип, например ArrayList
и другие, которые принимают non-nullable
типа, например int
. Код скомпилирует и выберет конструктор с типом nullable
.
Но если у вас есть более одного конструктора, который принимает тип nullable
, тогда как @ Дэн Тао сказал это яблоки и апельсины: любой из них может быть нулевым, но ни один не является более "конкретным", чем другой.
например:
class A
{
public A(int x)
{
Console.WriteLine("string");
}
public A(ArrayList x)
{
Console.WriteLine("ArrayList");
}
}
Этот код компилируется
но если вы измените public A(int x)t
на public A(int? x)
, это НЕ будет.