几个月前有人问我这个问题,我无法详细解释.C#中的引用类型和值类型有什么区别?
我知道,价值类型int,bool,float,等和引用类型delegate,interface等等.或者,这是不对的,太?
你能以专业的方式向我解释一下吗?
我很难理解这一点.请考虑以下示例:
protected void Page_Load(object sender, EventArgs e)
{
// No surprise that this works
Int16 firstTest = Convert.ToInt16(0);
int firstTest2 = (int)firstTest;
// This also works
object secondTest = 0;
int secondTest2 = (int)secondTest;
// But this fails!
object thirdTest = Convert.ToInt16(0);
int thirdtest2 = (int)thirdTest; // It blows up on this line.
}
Run Code Online (Sandbox Code Playgroud)
我在运行时获得的具体错误是在Visual Studio中的Specified cast is not valid. If I QuickWatch (int)thirdTest,我得到的值为Cannot unbox 'thirdTest' as a 'int'.
到底发生了什么事?