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

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


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

Для использования в качестве параметра "имя параметра" в универсальном типе или методе "идентификатор" тип "имя типа" должен быть типом значения, не допускающим значения NULL

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

Пример

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

// CS0453.cs  
using System;  
public class HV<S> where S : struct { }

// CS0453: string is not a value type
public class H1 : HV<string> { }

// CS0453: H1 is a class, not a struct
public class H2 : HV<H1> { }

// CS0453: HV is based on a class, not a struct
public class H3<S> : HV<S> where S : class { }
public class H4<S> : HV<S> where S : struct { } // OK

// CS0453: HV accepts a nullable int type
public class H4 : HV<int?> { }

// CS0453: HV is based on Nullable type of int
public class H5 : HV<Nullable<Nullable<int>>> { }

См. также