Возможен ли тип с нулевым значением как общий параметр?C#

Место общения программистов C#
Ответить
Anonymous
 Возможен ли тип с нулевым значением как общий параметр?

Сообщение Anonymous »

Я хочу сделать что-то вроде этого:

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

myYear = record.GetValueOrNull("myYear"),
Обратите внимание на тип, допускающий значение NULL, в качестве универсального параметра.

Поскольку функция GetValueOrNull могла возвращать значение null, моя первая попытка была такой:

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

public static T GetValueOrNull(this DbDataRecord reader, string columnName)
where T : class
{
object columnValue = reader[columnName];

if (!(columnValue is DBNull))
{
return (T)columnValue;
}
return null;
}
Но сейчас я получаю следующую ошибку:


Тип ' инт?' должен быть ссылочным типом, чтобы использовать его в качестве параметра «T» в универсальном типе или методе.


Верно! Nullable — это структура! Поэтому я попытался изменить ограничение класса на ограничение struct (и, как побочный эффект, больше не могу возвращать значение null):

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

public static T GetValueOrNull(this DbDataRecord reader, string columnName)
where T : struct
Теперь задание:

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

myYear = record.GetValueOrNull("myYear");
Выдает следующую ошибку:


Тип 'int?' должен быть типом значения, не допускающим значения NULL, чтобы использовать его в качестве параметра «T» в универсальном типе или методе.


Указывает вообще возможен тип, допускающий значение null, в качестве универсального параметра?

Подробнее здесь: https://stackoverflow.com/questions/209 ... r-possible
Ответить

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

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

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

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

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