Ler em inglês

Partilhar via


Erro do compilador CS0453

O tipo 'Type Name' deve ser um tipo de valor não anulável para usá-lo como parâmetro 'Parameter Name' no tipo genérico ou método 'Generic Identifier'

Este erro ocorre quando você usa um argumento de tipo sem valor na instanciação de um tipo genérico ou método que tem a restrição de valor nele. Também pode ocorrer quando você usa um argumento de tipo de valor anulável. Veja as duas últimas linhas de código no exemplo a seguir.

Exemplo

O código a seguir gera esse erro.

// 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>>> { }

Consulte também