NtF*_*reX 3 c# boxing unboxing casting
我可以投byte给int没有任何问题.
byte a = 2;
int b = a; // => unboxing, boxing or conversion?
Run Code Online (Sandbox Code Playgroud)
当我byte先施展object,然后int我得到一个InvalidCastException.
byte a = 2;
object b = a; // => boxing?
int c = (int) b; // => unboxing fails?
Run Code Online (Sandbox Code Playgroud)
但我可以通过使用来解决这个问题Convert.ToInt32.
byte a = 2;
object b = a; // => boxing?
int c = Convert.ToInt32(b); // => what happens here?
Run Code Online (Sandbox Code Playgroud)
InvalidCastException在第二个例子中得到一个?Convert.ToInt32背景?boxing,unboxing并conversion正确?/在我不确定的例子中,正确的术语是什么?请不要犹豫,提示我其他可能错误或遗漏的事情.
为什么我
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
Run Code Online (Sandbox Code Playgroud)
转换运营商是否在这里发挥作用?是否概述了基本类型的基本转换运算符?
是的,虽然在CLR中定义.