1.返回的是Object型,你要的是StringIntObject.i,只是这个Object的成员,当然不一样
2.(StringIntObject)cmbTextAlign.SelectedItem是重建类型,因为返回的是Object类型而不是StringIntObject类型,所以要转换回去。所有的用户类都是从Object继承来的,是引用类型,返回的Object句柄只能访问Object的方法,但是内存中的对象实际上还是完整的StringIntObject。
2.(StringIntObject)cmbTextAlign.SelectedItem是重建类型,因为返回的是Object类型而不是StringIntObject类型,所以要转换回去。所有的用户类都是从Object继承来的,是引用类型,返回的Object句柄只能访问Object的方法,但是内存中的对象实际上还是完整的StringIntObject。
2.我还是没懂((StringIntObject)cmbTextAlign.SelectedItem).i和StringIntObject.i有什么不同
可以用 if (cmbTextAlign.SelectedItem is int) 来判断 如果是一个int类型的变量,就可以这么强制转换。2.对于引用类型,object可以强制转换为任何引用类型(对象),但如果转换前后的类型不兼容,使用原类型不存在的成员会出现异常。强制转换只是编译器进行语法检查时用的,内存没有什么变化。
那假如StringIntObject里的2个变量都是int型的呢?
SelectedIndex不就可以了吗?如果有的话,呵呵
那假如StringIntObject里的2个变量都是int型的呢?