为什么这样做:
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
可能是一个 string
,而不是一个 int
,并且不能直接转换为另一个。 Convert.ToInt32()
实际上解析 string
并使用转换后的值创建一个新的 int
。
强制转换仅尝试将一种类型的实例解释为另一种类型的实例。
关于c# - 为什么我可以安全地转换为 int 而不能转换为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11550139/