将'var'与'is'结合使用会使Resharper认为代码在启发式上无法访问

时间:2019-06-08 00:08:19

标签: c# asp.net-core resharper var

我在控制器中有这段代码

if (ValidateId(id) is BadRequestObjectResult invalid)
    return invalid;

其中ValidateId返回BadRequestObjectResult(引用类型)。

如果我将代码更改为

if (ValidateId(id) is var invalid)
    return invalid;

Resharper会抱怨说,这些行之后的所有代码都无法通过启发式访问。

我知道启发式方法不是绝对的,但我想知道:为什么在此代码更改中触发了Resharper?

1 个答案:

答案 0 :(得分:0)

R#绝对正确,因为您使用总是返回 true var pattern,因此此代码不可访问。

  

对于任何类型或值,var模式都是万能的。的价值   总是将expr分配给与   expr的编译时间类型。 is表达式的结果总是   真正。其语法为:

expr is var varname