1

我有以下课程,

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;

4

1 回答 1

2

它将编译,但as结果值可能为空。您可以确保它不会以这种方式抛出:

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

    if (test != null)
    {
        var a = test.Test2;
    }
于 2017-12-06T15:24:25.507 回答