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


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

Обновлен: Ноябрь 2007

Сообщение об ошибке

Для использования в качестве параметра "имя параметра" в универсальном типе или методе "универсальный идентификатор" тип "имя типа" должен быть типом значения, не допускающим значения NULL
The type 'Type Name' must be a non-nullable value type in order to use it as parameter 'Parameter Name' in the generic type or method 'Generic Identifier'

Данная ошибка возникает при использовании аргумента, который не принадлежит к типу значения, для создания универсального типа или метода, имеющего ограничение value. Она также может происходить, если используется аргумент, принадлежащий к типу значения, который допускает значение NULL. См. две последние строки кода в представленном ниже примере.

Пример

Следующий код вызывает эту ошибку.

// CS0453.cs
using System;
public class HV<S> where S : struct { }
public class H1 : HV<string> { }                   // CS0453
public class H2 : HV<H1> { }                       // CS0453
public class H3<S> : HV<S> where S : class { }     // CS0453
public class H4 : HV<int?> { }                     // CS0453
public class H5 : HV<Nullable<Nullable<int>>> { }  // CS0453