1

カモノハシを検索するときに、ユーザーがカモノハシの ID または名前 (または名前の一部) を入力できるようにしたいと考えています。

データベースが現在ダウンしているため、このコードをテストすることはできませんが、kvp に 2 回割り当てているという事実は正しくないようです。とにかく、最初に私のコード:

String SearchVal = textBoxPlatypusNumOrPartialName.Text.Trim();
int PlatypusID;
int.TryParse(SearchVal, out PlatypusID);

Dictionary<int, string> CandidatePlatypusDict = PlatypusID > 0 ? PlatypusSetupData.GetPlatypusById(PlatypusID) :        PlatypusSetupData.GetCandidatePlatypusFromName(SearchVal);

KeyValuePair<int, String> kvp = new KeyValuePair<int, string>();
using (var getPlatypusIDAndNameDlg = new GetPlatypusForm(CandidatePlatypusDict)) {
    DialogResult dr = getPlatypusIDAndNameDlg.ShowDialog();
    if (dr == DialogResult.OK) {
        kvp = getPlatypusIDAndNameDlg.PlatypusKVP; 
    }
}

...今、代わりにこれを試してみると:

KeyValuePair<int, String> kvp; // = new KeyValuePair<int, string>();

「割り当てられていないローカル変数 'kvp' の使用」

また、null 非許容型であるため、null を KeyValuePair として割り当てることはできません。

この kvp のインスタンス化とその後の割り当ては問題ありませんか? そうでない場合は、どうすれば回避できますか?

4

2 に答える 2

3

この kvp のインスタンス化とその後の割り当ては問題ありませんか? そうでない場合は、どうすれば回避できますか?

大丈夫ですが、代わりにのことが必要になる場合があります。

KeyValuePair<int, String> kvp;
using (...) {
   kvp = dr == DialogResult.OK ? getPlatypusIDAndNameDlg.PlatypusKVP 
                               : /* some other value here */;
}

そうすれば、明らかに一度だけ割り当てられますが、常に割り当てられます。次に、 isn't でない状況でどのような値が必要かを検討する必要があります。drDialogResult.OK

于 2012-07-09T17:15:18.443 に答える
1

KeyValuePair が null であることが理にかなっている場合は、nullable として宣言します。

KeyValuePair<int, String>? kvp = null;

ただし、コードの後半で nullability (完全に単語です) を正しく使用するようにしてください。

編集:

今のようなプロパティを利用する

kvp.HasValue;
kvp.Value;

と方法

kvp.GetValueOrDefault();

于 2012-07-09T17:18:12.130 に答える