Leer en inglés

Compartir vía


Error del compilador CS1763

Un valor de parámetro predeterminado de un tipo de referencia que no sea una cadena solo se puede inicializar con null

Ejemplo

El ejemplo siguiente genera la advertencia CS1763:

// CS1763.cs (0,0)
class Program
{
    public void Goo<T, U>(T t = default(U)) where U : T
    {
    }
    static void Main(string[] args)
    {
        
    }
}

Este ejemplo genera la advertencia CS1763 porque el parámetro Goo<T,U> se declara con un valor predeterminado de default(U) cuando el tipo del parámetro es T, a pesar de la restricción de que U deriva de la clase base T.

Para corregir este error

Al cambiar default(U) para usar el argumento de tipo correspondiente se corrige este error:

    public void Goo<T, U>(T t = default(T)) where U : T
    {
    }