在C#中,当返回是试探性的不可访问时,为什么我需要键入它?
当最终返回语句被删除时,这个简单的C#方法就变得不可编译了。 为什么?我要说的是,切换已经完成,因此无法获得最终返回在C#中,当返回是试探性的不可访问时,为什么我需要键入它?,c#,C#,当最终返回语句被删除时,这个简单的C#方法就变得不可编译了。 为什么?我要说的是,切换已经完成,因此无法获得最终返回 private static object Convert(bool? predicate) { switch (predicate) { case false: return null; case true: return null; case null: return null; } retur
private static object Convert(bool? predicate)
{
switch (predicate)
{
case false: return null;
case true: return null;
case null: return null;
}
return null;
}
编辑:我使用的是C#7.3
这可能就是原因。因为编译器并不总是完美的,而且您使用的是较旧的编译器。如果您使用C#8.0编译器:它完全按照您的需要工作。Marc认为这取决于编译器的性能,这是正确的。如果你停留在C版本的早期版本,并且想要声明你的意图稍微好一点,你可以考虑在不应该发生的情况下抛出一个<代码>无效操作异常>代码>;p>
private static object Convert(bool? predicate)
{
switch (predicate)
{
case false: return null;
case true: return null;
case null: return null;
default: throw new InvalidOperationException();
}
}