Как использовать нулевой тип в iAsyncenumerable или листовой тип, как не нулевойC#

Место общения программистов C#
Ответить
Anonymous
 Как использовать нулевой тип в iAsyncenumerable или листовой тип, как не нулевой

Сообщение Anonymous »

У меня есть метод, который проверяет, является ли значение по умолчанию или имеет значение. Когда он имеет значение, я хочу вернуть значение. Входной объект нулевы, но iAsyncenumerable не принимает нулевые переменные.

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

public static HasValueResult HasValue(this TEntity? obj) where TEntity : struct
{
bool hasValue = false;
TEntity value = default;
HasValueResult result = default;

if(obj is IEnumerable enumerable)
{
hasValue = enumerable.Any();
value = (TEntity)obj;

result = new HasValueResult(hasValue, value);
}
else if(obj is Enum)
{
hasValue = true;
value = (TEntity)obj;

result = new HasValueResult(hasValue, value);
}
else if(obj is IAsyncEnumerable coll)
{

ICollection items = [];
ValueTask t = ((IAsyncEnumerable)obj).AnyAsync();
hasValue = t.Result;

IAsyncEnumerator en = ((IAsyncEnumerable)obj).GetAsyncEnumerator();
while(en.MoveNextAsync().Result)
{
items.Add(en.Current);
}

result = new HasValueResult(hasValue, null, items);
}
else
{
hasValue = obj is Guid g ? g.Equals(Guid.Empty) : !string.IsNullOrEmpty(obj.ToString());
}

return result;
}


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

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

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

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

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

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