【发布时间】:2019-11-14 17:57:14
【问题描述】:
这个作品
public static T? Read<T>(object value) where T : struct
{
return (T)Convert.ChangeType(value, typeof(T));
}
但这不起作用:
错误 CS8370 功能“可为空的引用类型”在 C# 7.3 中不可用。请使用 8.0 或更高版本的语言。
public static T? Read<T>(object value)
{
return (T)Convert.ChangeType(value, typeof(T));
}
我对我搜索过但没有找到的错误或功能感到好奇。
如果不相关,我可能会删除该问题。所以请通知我这样做。
【问题讨论】:
-
即使使用 C# 8 这也是不可行的 - 请参阅 stackoverflow.com/questions/58852272 了解原因。
-
感谢您的回复,也就是说它不起作用?以及为什么实施。引用类型我的意思是为什么他们需要“?”它已经允许为空。或者只是为了设计或娱乐。
-
这个问题是关于尝试编写一个返回任意类型参数的可为空形式的方法。我链接到的问题也与此有关。这应该绝不被视为可空引用类型是一个坏主意的声明。这只是一个限制。就“为什么?是必要的”而言,这是一个更广泛的问题——我建议您阅读更多关于一般可空引用类型的信息。见docs.microsoft.com/en-us/dotnet/csharp/nullable-references
-
@deveton:显然有一个开关默认打开引用类型的不可为空。 |它有点像 readonly 或 out - 编译器提示该变量应该/不应该发生什么。
标签: c# .net generics nullable c#-7.3