私のアプリケーションでは、Active Directoryからの記述を取得して文字列に割り当てることで、後でその文字列を「契約済み」でチェックしてそのユーザーを無視できます。
問題はすべてのユーザーが説明フィールドに値を持っているとは限りません。その結果、Null Reference Exception
がスローされます。私がこれを扱う唯一の方法は、String.IsNullOrEmpty
を使ってもう1つのチェックを追加し、一時的な値を追加してから後でその一時的な値を削除することです。これは面倒で間違っているようです。Null値の文字列にString.Containsを使用する
チェック中に文字列にnull
を処理するには何が必要ですか?私は、次の2つのコードセットを試してみました、両方のエラーをスローしています
var userDescription = (string)userDirectoryData.Properties["description"].Value;
if (userDescription.Contains("Contracted"))
{
continue;
}
else
{
//Do Stuff here
}
そして
var userDescription = (string)userDirectoryData.Properties["description"].Value;
if (userDescription.IndexOf("Contracted") > -1)
{
continue;
}
else
{
//Do Stuff here
}
EDIT: https://msdn.microsoft.com/en-us/library/k8b1470s.aspxによると、それが戻りますように私はString.Emptyのに設定することはできません偽陽性を引き起こす「0」の結果は、「契約」のみを含む。
「一時的な値を追加する」が「String.IsNullOrEmpty」(または「String.IsNullOrWhitespace')を使用していることを意味するのは、ここでは完全に正常ではありません。 –
これら2つのスニペットの違いは何ですか? –
'if(userDescription!= null && userDescription.IndexOf(" Contracted ")> -1)' – Magnus