黑马程序员技术交流社区
标题: Text属性和SelectedItem属性的区别? [打印本页]
作者: 王海舟 时间: 2012-9-16 10:35
标题: Text属性和SelectedItem属性的区别?
在写聊天室程序的时候遇到一个问题:
-判断ListBox控件列表中是否有被选中的项
if (string.IsNullOrEmpty(lbClientOnLine.Text))
{
MessageBox.Show("请选择一个在线客户端");
return;
}
使用这种方法,程序运行正常。
-判断ListBox控件列表中是否有被选中的项
if (string.IsNullOrEmpty(lbClientOnLine.SelectedItem.ToString()))
{
MessageBox.Show("请选择一个在线客户端");
return;
}
使用这种方法,程序运行错误。
那么Text属性和SelectedItem属性到底有些什么区别呢?为什么程序会出错呢?
作者: 李后量 时间: 2012-9-16 12:23
本帖最后由 李后量 于 2012-9-16 12:31 编辑
先运行下这段代码- object obj = "";
- string a = "";
- a = obj.ToString();
- MessageBox.Show(a);
- object objNull = null;
- string b = "";
- a = objNull.ToString();
- MessageBox.Show(b);
复制代码 你会发现当object类型的变量不为null的时候,用ToString方法转成string类型不会有任何问题;但如果object类型的变量为null的时候,ToString方法转成string类型的时候就会报错,抛出一个名为NullReferenceException的异常。而ListBox.SelectItem的类型为object,默认情况下为null,所以直接用ToString方法 转成string类型会报错。
而如果是用这种方法转成string类型就不会出错,即使object类型为Null- object objNull = null;
- string c = objNull as string;
- string b = "";
- b=c;
- MessageBox.Show(b);
复制代码 现在你应该明白为什么你会出现上述问题了吧?
作者: 李后量 时间: 2012-9-16 12:40
详细请参考帖子http://bbs.itheima.com/thread-25769-1-1.html
作者: 王海舟 时间: 2012-9-16 15:41
李后量 发表于 2012-9-16 12:23 
先运行下这段代码你会发现当object类型的变量不为null的时候,用ToString方法转成string类型不会有任何问题 ...
先感谢你的回答,我把这几种转换方式在代码中都试了一遍:
假定data 就是我们要被转换的数据
1、data.ToString()
2、Convert.ToString(data)
3、(string)data
4、string str = data as string
如果data=null,结果是:
1、data.ToString() 报异常
2、Convert.ToString(data) 返回null
3、(string)data 返回空
4、string str = data as string 返回空
作者: 李后量 时间: 2012-9-16 16:18
王海舟 发表于 2012-9-16 15:41 
先感谢你的回答,我把这几种转换方式在代码中都试了一遍:
假定data 就是我们要被转换的数据
这总结的精辟!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |