考虑以下程序,
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的缺陷吗?
-
注意:中间的那个开关已经被重构为更明智的选择。