У меня есть класс, где я использую свойство типа Exists
, которое возвращает true
, когда поле _value
не null
.
Это поле позже используется для создания StreamReader
от него.Когда я использую его, ReSharper
предупреждает меня, что это может быть null
, но так как я предотвращаю это с if(Exists)
раньше, этого не будет.
Я отключил предупреждение с комментарием, но мне было интересно, есть ли более чистый способ, или какая-нибудь аннотация или другой прием, чтобы ReSharper
понял, что безопасно использовать _value
, когда Exists == true
?
internal class User
{
private readonly string _value;
internal User([NotNull] string name, [CanBeNull] string value)
{
_value = value;
}
public bool Exists => !(_value is null);
public async Task CopyToAsync(Stream stream)
{
if (Exists)
{
// ReSharper disable once AssignNullToNotNullAttribute - '_value' won't be null here
using (var valueStream = _value.ToStreamReader())
{
await valueStream.BaseStream.CopyToAsync(stream);
}
}
}
}