Resharper进行空检查时出现意外的“表达式始终为真”

时间:2018-10-03 16:51:14

标签: c# resharper

考虑以下程序,

quickstart.sh

执行时,由于template <typename T> struct base { T a; }; template <typename T> struct derived : base<T> { derived(T v) : base<T>{v} {} }; 为空,因此会在class Foo { public string Score { get; set; } } class Program { static Foo GetFoo(int x) => x < 0 ? null : new Foo {Score = x > 100 ? $"{x}": "^"}; static void Main(string[] args) { Console.WriteLine("Hello World!"); var foo = GetFoo(-2); switch (foo?.Score) { case string s when int.TryParse(s, out _): Console.WriteLine("Score exists"); break; case null: break; } if (!int.TryParse(foo?.Score, out _)) { Console.WriteLine(foo.Score); } } } 上抛出NullReferenceException

Console.WriteLine(foo.Score)修改为

foo

ReSharper 2018.2.3报告if始终为真。我在这里缺少什么吗?这是ReSharper的缺陷吗?

-

注意:中间的那个开关已经被重构为更明智的选择。

0 个答案:

没有答案