0

次のコード行があるため、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);
                            }

どうも、上記のものは私の目には良くありません。どうすればこれをより良い方法で書くことができますか?

4

3 に答える 3

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 が返された場合はどうしますか? 本当に続けられますか?

于 2012-12-11T10:24:13.300 に答える
1
  1. !=手段not equal to==手段equal to

  2. 使えないならNULL使える""

ロジックを使用して条件を適用し、必要なものが得られない場合でも、次のようにします。

  1. 条件は次のようになり、論理演算子falseも使用しましたAND
于 2012-12-11T10:30:44.847 に答える