Здравствуйте, Разраб, Вы писали:
Р>Подчеркивания раздражают. Юнион типы завезли уже?
Р>Флажки не канают.
Есть два распространенных способа решения этой задачи.
Способ №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, но и другие тоже приходится иногда использовать.