私は使っている:
if (RadioButtonList_VolunteerType.SelectedItem != null)
またはどうですか:
if (RadioButtonList_VolunteerType.Index >= 0)
またはどうですか(Andrew Hareの回答による):
if (RadioButtonList_VolunteerType.Index > -1)
この質問を読むかもしれない人には、以下は有効な方法ではありません。 Keltexが指摘したように、選択された値は空の文字列である可能性があります。
if (string.IsNullOrEmpty(RadioButtonList_VolunteerType.SelectedValue))
読みやすさの点では、それらはすべて私にとって何かが欠けています。これは拡張メソッドの良い候補のようです。
public static class MyExtenstionMethods
{
public static bool HasSelectedValue(this RadioButtonList list)
{
return list.SelectedItem != null;
}
}
...
if (RadioButtonList_VolunteerType.HasSelectedValue)
{
// do stuff
}
これらはすべて、選択した値をチェックするための有効で完全に正当な方法です。個人的に私は見つけます
RadioButtonList_VolunteerType.SelectedIndex > -1
最も明確になります。
私はお勧め:
RadioButtonList_VolunteerType.SelectedIndex>=0.
Microsoftドキュメント によると:
リスト内の選択されたアイテムの最低序数インデックス。デフォルトは-1で、何も選択されていないことを示します。
string.IsNullOrEmpty(RadioButtonList_VolunteerType.SelectedValue)は、空の値を持つListItemを持つことができるため、常に機能するとは限りません。
<asp:ListItem Value=''>This item has no value</asp:ListItem>
質問は、nullをチェックするか、intの値をチェックするかを中心に展開します。マーティンの素晴らしい拡張メソッドも書くことができます:
public static bool HasSelectedValue(this ListControl list)
{
return list.SelectedIndex >= 0;
}
ListControlのMSDNドキュメントには、次のように記載されています。
したがって、どちらも有効な方法であり、両方とも機能します。問題は、どちらが最善の方法かということです。 SelectedIndexは参照型の操作ではなく、値型の操作であると推測しています。しかし、それを裏付けるものは何もありません。