C# - 通过if condtion检查值的数据类型

1 c# events types listbox arraylist

我将ArrayList()绑定到Listbox控件,并为Array中的数据分配Displaymember和Value.我的问题是我在启动时绑定但是在几次函数调用后数组被填充.我在selectedIndexChanged上有代码来检查selectedValue但是如果ArrayList为空它返回一个对象,一旦它有数据就会返回我期望的字符串.我仍然感到困惑,为什么当列表没有数据时它运行selectedIndexChanged.认为它可能在我绑定Displaymember之后但在赋值之前运行:

lbCAT_USER.DataSource = USERS;
// Running here maybe?
lbCAT_USER.DisplayMember = "DisplayString";
// Or Here?
lbCAT_USER.ValueMember = "ID";
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,我当前的解决方法是将SelectedValue与字符串进行比较并尝试重新运行该函数的try/catch.

简单的解决方法可能是在if语句之前检查数据类型的方法吗?任何建议的想法都可能非常有用.谢谢

Wil*_*ins 10

您有两种方法可以检查:

string value = list.SelectedValue as string;

// The cast will return null if selectedvalue was not a string.
if( value == null ) return; 

//Logic goes here.
Run Code Online (Sandbox Code Playgroud)

如果你只是想做比较:

if( list.SelectedValue is string )
{
   // ...
}
Run Code Online (Sandbox Code Playgroud)