什么是引擎盖下的演员

Leo*_*rdo 8 .net c# clr

可能重复:
C#"as"施放vs经典施法

我想知道当我做类似的事情时,.Net CLR的内幕会发生什么

object myObj = "abc";
string myStr = (string)myObj;

以及第二行与string myStr = myObj.ToString()或如何不同string myStr = myObj as string;

环顾四周我找到了泛型的答案,比如"编译器在那里插入代码",但我并不满意......我正在寻找演员机制的深刻内容......哦,编译器插入代码?给我看看!编译器优化代码?怎么样?什么时候?

请尽可能接近金属!

Tho*_*and 3

您可以使用IL Dissasembler在较低级别查看代码生成的内容。如果您的计算机上安装了 Visual Studio,则只需在 Windows 搜索框中键入“ildasm”即可找到它。

以下代码的 IL 如下所示:

object myObj = "abc";
string myStr = (string)myObj;    
string tostring = myObj.ToString();
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 看来我必须更深入...“IL_0008:castclass [mscorlib]System.String”似乎是另一个抽象层... (2认同)
  • @Leonardo 这大约是我愿意深入研究这类事情的深度:)。http://en.wikipedia.org/wiki/Common_Intermediate_Language 有 STLOC 等命令的解释。 (2认同)