作者tomex (tomex_ou)
看板C_Sharp
标题[问题] 物件转型别(大转小)的损失?
时间Wed May 25 19:54:12 2005
当浮点数大->小作型别强制转换时,我们知道损失了小数点後的值:
float f = 1.2L;
int i = (int)f;
而所有的类别/物件都是从object继承而来的,
string s = "ABC";
object o = (object)s;
string s1 = (string)o;
s->s1中间,损失的又是什麽呢?
ps.
我曾质疑为何compiler要允许物件大转小呢?
後来看书,写说:
人->我,所以我=人,人=我
只是不清楚转换间的损失是啥罢了...
在猜,是否继承的物件之延伸的变数/methods被隐住了,
但实质位址并没有消失
因此物件的大小转换,其实只是遮住而非消灭多出来的东西?!
因为对於ref type的物件而言,
等号(=)是新物件的r-value指向同一个物件heap位址
并没有作真正的资料异动,因此转换回来没有损失。
不知我想得对不对?!
--
贯彻分享精神
我为人人,人人为我
※ 编辑: tomex 来自: 60.248.89.46 (05/25 19:57)
1F:推 cplusplus:没有损失啊...转换顶多损失效率~ 140.115.205.46 05/25
2F:→ cplusplus:因为转换必须type checking~ 140.115.205.46 05/25
3F:→ cplusplus:实际上 的确REF TYPE 如你所说 但是所谓大转小 140.115.205.46 05/25
4F:→ cplusplus:好难说 这是oo的一种概念...不是什麽"大小"... 140.115.205.46 05/25
5F:推 liunate:我也很想知道 =X 211.74.98.216 05/26