0

以下の if ステートメントはtrue、レジストリ キーが見つからない場合に解決されません。ここで何が欠けていますか?

if ((Convert.ToString(Registry.GetValue(key, "EnableLinkedConnections", "")) == "0") ||
    (Convert.ToString(Registry.GetValue(key, "EnableLinkedConnections", "")) == null))
4

4 に答える 4

8

MSDN Docsによると、渡す 3 番目のパラメーターは、キーが見つからない場合に返される値です。

"" (String.Empty) を指定しているため、null または "0" ではなく、チェックする必要がある値です。

于 2012-11-21T15:55:28.570 に答える
5

オブジェクトが "" を返すため、null の Convert.ToString 。試してみてくださいstring.IsNullOrEmpty()

于 2012-11-21T15:53:16.617 に答える
2

Registry.GetValue は null オブジェクトを返しているため、Convert.ToString()はチェックしていない空の文字列 (こちらを参照) に変換します。代わりにこれを試してください:

object value = Registry.GetValue(key, "EnableLinkedConnections", "");
if (value != null)
{
    string text = Convert.ToString(value);
} 
于 2012-11-21T15:58:38.387 に答える
0

経験則として、Convert.ToString の前にそれが null であるかどうかを確認し、同じメソッドを 2 回呼び出す前にオブジェクトに格納してください。これによりパフォーマンスが向上します。

object regystryValue = Registry.GetValue(key, "EnableLinkedConnections", "");

if(regystryValue != null && regystryValue.ToString() =="0"){
//do things
}
于 2012-11-21T15:58:20.200 に答える