来自第 28 行的空引用 '#as(test, 0)' 将在第 28 行取消引用

Null reference '#as(test, 0)' that comes from line 28 will be dereferenced at line 28

我有以下类,

public class Test1
{
    public Test2 Test2 { get; set; }
}

public class Test2 { }

现在我有以下方法,

private void Test()
    {
        var test = ConfigurationManager.GetSection("Test");

        if (test != null)
        {
            var a= (test as Test1).Test2;
        }
    }

现在我收到 Klockwork 错误提示,

Null reference '#as(test, 0)' that comes from line 28 will be dereferenced at line 28

这个错误是什么意思,如何解决?

注意这是Klockwork错误,但是C#编译不会有任何错误。

以下代码行出错,

var a= (test as Test1).Test2;

它会编译,但是 as 有可能结果值可能为空。你可以确保它不会这样抛出:

    var test = ConfigurationManager.GetSection("Test") as Test1;

    if (test != null)
    {
        var a = test.Test2;
    }