关闭。这个问题需要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/