Upozornění kompilátoru (úroveň 1) CS1720
Výraz vždy způsobí System.NullReferenceException, protože výchozí hodnota generického typu má hodnotu null.
Pokud napíšete výraz zahrnující výchozí proměnnou obecného typu, která je odkazovým typem (například třída), dojde k této chybě. Vezměte v úvahu následující výraz:
default(T).ToString()
Vzhledem k tomu T
, že je typ odkazu, jeho výchozí hodnota je null, a proto se pokusí použít metodu ToString na ni vyvolá NullReferenceException.
Omezení odkazu na třídu pro typ T
zajišťuje, že T
je to typ odkazu.
Následující ukázka vygeneruje CS1720.
// CS1720.cs
using System;
public class Tester
{
public static void GenericClass<T>(T t1) where T : class
{
Console.WriteLine(default(T).ToString()); // CS1720
}
public static void Main() {}
}
Zpětná vazba k produktu .NET
.NET je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby: