简单来说 managed code 就是由一个 runtime 管理执行的代码, 这里的 runtime 以 .NET 来说就是指 CLR(Common Language Runtime), CLR 负责将其编译为机械码然後执行, 最重要的是执行阶段时提供几项重要服务, 例如自动记忆体管理(automatic memory management)、安全界线(security boundaries)、型别安全(type safty), managed code 由 .NET 所支援的高阶语言撰写, 经编译器编译後不会得到机械码, 而是得到在 runtime 可编译与执行的(中继语言)Intermediate Language 码, 得到 IL code 想执行时会由 CLR 接管, 并开始 Jusu-In-Time compile, 将 IL code 编译成可实际在 CPU 上执行的机器码, 这样一来 CLR 确切知道你撰写的程序码在做什麽并且可以有效管理它.
因为在 .NET 上所有程序码由 CLR 管理, 所以可以支持反射机制, 可以让我们动态获取物件的类型, 相关功能的类别放在 System.Reflection 命名空间中
using System.Reflection;
class Car
{
public string color {get; set;}
public void run()
{
color = "红色";
Console.WriteLine("车子变红色并跑起来");
}
}
Type type = typeof(Car); // 使用 typeof 取得 类型信息
// 利用 System.Reflection 下的 Activator 类
object o = Activator.CreateInstance(type);
MethodInfo method = type.GetMethod("run");
method.Invoke(o, null);
PropertyInfo color = type.GetRuntimeProperty("color");
Console.WriteLine(color.GetValue(o));
>>: [Part 5 ] Vue.js 的精随-元件生命周期 (序)
由於前面我们都是使用 3.9.1版 来介绍 今天要来介绍 4.0 啦~~ gulp4.0 多了 pa...
Day 29 - Android Studio 这几天以来的统整 离我们铁人完赛只剩一天了,我今天就...
这章节是延伸v-if和v-show管理元件,如何用更简便的方式做tab页签。 v-bind:is 做...
在继续实作 domain layer 之前,我们会介绍一个方便日常开发的工具:Flipper。 An...
今日目标 学习了解 Python Pandas 的观念与运用 What is Pandas? Pan...