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

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


Предупреждение компилятора (уровень 1) CS1720

Выражение всегда будет вызывать System.NullReferenceException, поскольку значение "универсальный_тип" по умолчанию равно null

Если вы записали выражение с переменной универсального типа, имеющей значение по умолчанию, которая является ссылочным типом (например, класс), возникнет эта ошибка. Рассмотрим следующее выражение:

default(T).ToString()  

Так как T является ссылочным типом, его значение по умолчанию равно null, и поэтому попытка применить к нему метод ToString вызовет NullReferenceException.

Пример

Ограничение ссылки на класс для типа T гарантирует, что T является ссылочным типом.

При компиляции следующего примера будет выдано предупреждение 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() {}  
}