. net 4中带有可空引用注释的c# TryGet.x /标准2.0



在。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框架中使用可空引用类型

不幸的是,我亲自尝试过,这些属性和功能只对

有效。
  • 。Net5.0,6.0,Preview 7
  • 。Core3.0,3.1
  • 。NET标准2.1

相关内容

  • 没有找到相关文章

最新更新