在。net 4中使用带out参数的TryGet
类型方法时,是否有方法填充可空引用安全?x/.NET标准2.0?
根据尝试可空引用类型|。net博客看起来像NotNullWhenAttribute在。net Core/。net 5+/。net Standard 2.1+中可用,允许以下内容
public class MyString
{
// True when 'value' is null
public static bool IsNullOrEmpty([NotNullWhen(false)] string? value)
{
...
}
}
public class MyVersion
{
// If it parses successfully, the Version will not be null.
public static bool TryParse(string? input, [NotNullWhen(true)] out Version? version)
{
...
}
}
public class MyQueue<T>
{
// 'result' could be null if we couldn't Dequeue it.
public bool TryDequeue([MaybeNullWhen(false)] out T result)
{
...
}
}
无论如何,在。net 2.0或。net 4中实现类似的东西。x库?在。net Framework或。net Standard 2.0库中使用可空引用类型有多个步骤:
- 从最新版本复制属性,并使用
#if
只将属性添加到您的目标(NullableAttributes.cs) - 启用可空引用类型
<Nullable>enable</Nullable>
或#nullable enable
来自。net框架的BCL没有注释。一个解决方案是多目标项目,以获得最新的注释,并禁用旧目标的空警告。
<PropertyGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<NoWarn>$(NoWarn);nullable</NoWarn>
</PropertyGroup>
我写了一篇更详细的文章:如何在。net标准2.0和。net框架中使用可空引用类型
不幸的是,我亲自尝试过,这些属性和功能只对
有效。- 。Net
5.0
,6.0
,Preview 7
- 。Core
3.0
,3.1
- 。NET标准
2.1