c# – 为什么我可以安全地转换为int而不是转换为int?
发布时间:2020-12-15 20:52:44 所属栏目:百科 来源:网络整理
导读:为什么这样做: ComboBox cb = sender as ComboBox;int validSelection = Convert.ToInt32(cb.Tag);if (cb.SelectedIndex != validSelection) { cb.SelectedIndex = validSelection;} …但是这个: ComboBox cb = sender as ComboBox;int validSelection = (
为什么这样做:
ComboBox cb = sender as ComboBox; int validSelection = Convert.ToInt32(cb.Tag); if (cb.SelectedIndex != validSelection) { cb.SelectedIndex = validSelection; } …但是这个: ComboBox cb = sender as ComboBox; int validSelection = (int)cb.Tag; // <-- fails if (cb.SelectedIndex != validSelection) { cb.SelectedIndex = validSelection; } …错误输出“对象未设置为对象的引用”? 解决方法
那是因为
a conversion is not the same thing as a cast.
cb.Tag可能是一个字符串,而不是一个int,一个不能直接转换为另一个. Convert.ToInt32()实际上解析字符串并使用转换后的值创建一个新的int. 强制转换仅尝试将类型的实例解释为另一种类型的实例. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |