我可以在没有任何问题的情况下将byte转换为int。
byte a = 2;
int b = a; // => unboxing, boxing or conversion?当我先把byte投给object,然后再投给int时,我得到了一个InvalidCastException。
byte a = 2;
object b = a; // => boxing?
int c = (int) b; // => unboxing fails?但是我可以通过使用Convert.ToInt32来解决这个问题。
byte a = 2;
object b = a; // => boxing?
int c = Convert.ToInt32(b); // => what happens here?InvalidCastException?Convert.ToInt32是什么?boxing、unboxing和conversion贴上了正确的标签吗?/在我不确定的例子中,正确的术语是什么?请不要暗示我可能犯了错或错过了其他事情。
发布于 2018-10-01 11:12:12
为什么我在第二个例子中得到一个
InvalidCastException?
因为您指定了要将(同时开箱)变量的类型转换为其他类型。并且没有定义内建、隐式或显式转换运算符,所以它失败了。
背景中的
Convert.ToInt32是什么?
这。 --它使用IConvertible接口进行转换。
我是否正确地标注了装箱、反装箱和转换?/在我不确定的示例中,正确的术语是什么?
int b = a; // => conversion
object b = a; // => boxing
int c = (int) b; // => casting fails
int c = Convert.ToInt32(b); // => what happens here: a method call that happens to do a conversion转换操作符在这里吗?是否概述了基本类型的基本转换操作符?
是的,虽然是在CLR中定义的。
发布于 2018-10-01 11:13:47
为什么我在第二个例子中得到一个InvalidCastException?
您只能打开原始类型的框。
背景中的Convert.ToInt32是什么?
它包含一个转换。
我是否正确地标注了装箱、反装箱和转换?/在我不确定的示例中,正确的术语是什么?
byte a = 2;
int b = a; // convertation (byte to int)
object b = a; // boxing
int c = (int) b; //unboxing
object b = a; // boxing
int c = Convert.ToInt32(b); // convertation (object to int)转换操作符在这里吗?是否概述了基本类型的基本转换操作符?
您可以反映框架代码,以了解它如何更深入地工作。
https://stackoverflow.com/questions/52589790
复制相似问题