带有泛型参数的 C# 8.0 可为空引用类型功能

标签 c# nullable c#-8.0 nullable-reference-types

关闭。这个问题需要details or clarity .它目前不接受答案。












想改善这个问题吗?通过 editing this post 添加详细信息并澄清问题.

去年关闭。




Improve this question




我有一个功能:

public static object? ToType(Type type, object? value)

我想创建一个有用的快捷方式,例如:

public static T ToType<T>(object? value)
{
  return (T)ToType(typeof(T), value);
}

启用可空检查的 C# 8.0 编译器给出以下警告:

CS8601: Possible null reference assignment.



函数接受 string , int和其他类型,所以我不能设置像 class 这样的通用约束.此外,它可以返回 null .使用 T?用于转换和返回会出现编译器错误。

有没有办法修复警告?

最佳答案

为了让编译器不担心空引用,只需确保要强制转换的对象不为空即可。

    [return: MaybeNull]
    public static T ToType<T>(object? value)
    {
        var res = ToType(typeof(T), value) ?? new object();
        return res is T generic ? generic : default;
    }

恕我直言,这种处理类型气味的方式。您想通过 ToType 达到什么目的?也许你可以从那开始得到一些更清洁的东西。

关于带有泛型参数的 C# 8.0 可为空引用类型功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59199259/

相关文章:

templates - 也许输入 D

c# - 替代在 IAsyncEnumerable 中产生

c# - Unity IOC、AOP & 接口(interface)拦截

c# - 通过在文本框中输入进行过滤

.net - 将 Nullable Enum 设置为 $null - 这真的会导致 PSInvalidCastException 吗?

c# - 装箱/拆箱可空类型 - 为什么要执行此操作?

c# - 使用 OWIN 和异步方法的多语言网站

c# - 在 WPF 中更改网格行的背景颜色

c# - 从另一个泛型方法调用一个 MaybeNull 泛型方法

c# - 具有泛型返回类型的可空引用类型