Re: C# какая альтернатива return null?
От: Aquilaware  
Дата: 12.08.23 12:04
Оценка:
Здравствуйте, Разраб, Вы писали:

Р>Подчеркивания раздражают. Юнион типы завезли уже?

Р>Флажки не канают.

Есть два распространенных способа решения этой задачи.

Способ №1:

public User? TryGetUser(int id) 
{
    if (id < 1)
        return null;
    ...
}


Способ №2:

public bool TryGetUser(int id, [MaybeNullWhen(false)] out User user) 
{
    if (id < 1)
    {
        user = null;
        return false;
    }
    ...
}


Есть и третий способ, это использование Optional<T>. Эту конструкцию предоставляют некоторые библиотеки-фреймворки для .NET:

public Optional<User> TryGetUser(int id) 
{
    if (id < 1)
        return Optional.None<User>();
    ...
    return Optional.Some(user);
}

// и пример использования

var user = TryGetUser(1);
if (user.HasValue)
    AddPermissionFor(user.Value);


Это пожалуй и всё. Мой самый предпочитамый способ — это способ №1, но и другие тоже приходится иногда использовать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.