C# Передайте значение null в общий метод, получающий тип, допускающий значение NULLC#

Место общения программистов C#
Ответить
Anonymous
 C# Передайте значение null в общий метод, получающий тип, допускающий значение NULL

Сообщение Anonymous »

Следующий код генерирует CS1503 с сообщением:

ошибка CS1503: Аргумент 1: невозможно преобразовать из '' в 'T?'

Код: Выделить всё

public class MyClass where T : notnull
{
// This is the only reason for the T:notnull constraint
private Dictionary myDict = new();

// Just because the dictionary key isn't nullable,
// doesn't mean I shouldn't be able to declare a function
// that takes the nullable type T?
public void foo(T? val)
{
}

public MyClass()
{
foo(null); // CS1503
}
}
Как я могу изменить приведенное выше, чтобы подавить CS1503? Обратите внимание, что у меня включены предупреждения как ошибки. Вместо этого я попытался передать default(T?), но при этом на самом деле не передается значение null для типов значений, а вместо этого по умолчанию используется тип по умолчанию, не допускающий значения NULL. Кажется, что-то в необнуляемости типа T препятствует объявлению чего-либо в классе как типа T, допускающего значение NULL?.


Подробнее здесь: https://stackoverflow.com/questions/797 ... lable-type
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»