Ошибка компилятора CS0312
Тип "тип1" не может быть использован как параметр-тип "имя" в универсальном типе или методе "имя". Допускающий значение null тип "тип1" не удовлетворяет ограничению типа "тип2".
Тип значения, допускающего значение NULL, отличается от своего ненулевого аналога; неявное преобразование ссылок или определение преобразования между ними не существует. Допускающая значения null упаковка-преобразование не удовлетворяет ограничению универсального типа. В следующем примере первый параметр типа является Nullable<int>
, а второй параметр типа является System.Int32
.
Удалите ограничение.
В следующем примере сделайте второй аргумент типа либо
int?
, либоobject
.
Следующий код приводит к возникновению ошибки CS0312:
// cs0312.cs
class Program
{
static void MTyVar<T, U>() where T : U { }
static int Main()
{
MTyVar<int?, int>(); // CS0312
return 1;
}
}
Хотя тип значения, допускающего значение NULL, отличается от ненулевого типа, различные виды преобразований допускаются между значениями, допускаемыми значением NULL и не допускаемым значением NULL.
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: