Прочитать на английском

Поделиться через


Ошибка компилятора CS0312

Тип "тип1" не может быть использован как параметр-тип "имя" в универсальном типе или методе "имя". Допускающий значение null тип "тип1" не удовлетворяет ограничению типа "тип2".

Тип значения, допускающего значение NULL, отличается от своего ненулевого аналога; неявное преобразование ссылок или определение преобразования между ними не существует. Допускающая значения null упаковка-преобразование не удовлетворяет ограничению универсального типа. В следующем примере первый параметр типа является Nullable<int> , а второй параметр типа является System.Int32.

Исправление ошибки

  1. Удалите ограничение.

  2. В следующем примере сделайте второй аргумент типа либо 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.

См. также