在if条件下检查空值的方法

时间:2012-12-11 10:22:22

标签: c#

我有以下代码行,这给我带来了NPE的麻烦

   ServeUrl = ((NameValueCollection)ConfigurationManager.GetSection("Servers")).Get(ment);

当我以下列方式写这篇文章时,我不再获得NPE

  if (ConfigurationManager.GetSection("Servers") != null && ((NameValueCollection)ConfigurationManager.GetSection("Servers")).Get(ment) != null)
                            {
                                ServeUrl = ((NameValueCollection)ConfigurationManager.GetSection("Servers")).Get(ment);
                            }
Somwhow,上面的东西对我的眼睛看起来不太好。我怎样才能以更好的方式写出来?

3 个答案:

答案 0 :(得分:5)

我将提取一个临时变量:

var section = (NameValueCollection)ConfigurationManager.GetSection("Servers");
if (section != null && section.Get(ment) != null)
{
    ...
}

甚至:

var section = (NameValueCollection)ConfigurationManager.GetSection("Servers");
if (section != null)
{
    var url = section.Get(ment);
    if (url != null)
    {
        ServeUrl = url;
    }
}

如果GetSection返回null,您想要做什么?你能实际继续吗?

答案 1 :(得分:1)

  1. !=表示not equal to==表示equal to

  2. 如果您无法使用NULL,可以使用""

  3. 使用逻辑应用条件,然后即使它没有得到你想要的那样:

    1. 条件为false,您还使用了AND逻辑运算符

答案 2 :(得分:0)

我会用这个(仅供参考,我没有在编译器中尝试过):

 if (ConfigurationManager.GetSection("Servers")?.Get(ment) is NameValueCollection nvc)
                        {
                            ServeUrl = nvc;
                        }