Можно ли вернуть значение N, допускающее значение NULL, для универсального метода с входящим T, который может быть классC#

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

Сообщение Anonymous »

Фиктивный код:

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

        // TSource1 elementObj can be struct or can be class object and never can be nullable struct or null (because method inner code will create Exceptions in that case)
public static TSource1? ReturnNullOrNotNullTSource1(TSource1 elementObj)
{
// making some checkings for elementObj, if chekings have passed I need to return that elementObj back, if chekings have not passed I need to return null (so I used TSource1? as a method return type).
// ...
return (passed) ? elementObj : default(TSource1?);
}
Я могу вернуть значение по умолчанию (TSource1?) в случае, когда проверки не прошли и этот код скомпилирован, но когда я тестирую его с TSource1=DateOnly, я вижу, что возвращаемый реальный объект не ноль, а «01.01.0001». Он возвращает default(TSource1) вместо default(TSource1?), и это неверно для меня, потому что я не могу знать, не прошли ли проверки или они прошли для этого случая:

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

var result = ReturnNullOrNotNullTSource1(new DateOnly(0001, 1, 1));
Я ожидаю, что смогу вернуть структуру T с нулевым значением для входящей структуры T, не допускающей значения NULL, но этот код работает неправильно. Что я могу сделать?

Подробнее здесь: https://stackoverflow.com/questions/791 ... t-that-can
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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