C#中的托管代码与非托管代码

非托管代码

  • 不受CLR控制的应用程序不受管理

  • 不安全代码或非托管代码是使用指针变量的代码块。

  • unsafe修饰符允许在非托管代码中使用指针。

让我们看一个例子-

示例

static unsafe void Main(string[] args) {
   int var = 20;
   int* p = &var;
   Console.WriteLine("Data is: {0} ", var);
   Console.WriteLine("Address is: {0}", (int)p);
   Console.ReadKey();
}

托管代码

托管代码是由公共语言运行时管理其执行的代码。它获取托管代码并将其编译为机器代码。之后,代码被执行。此处的运行时(即CLR)提供自动内存管理,类型安全性等。

托管代码使用在.NET之上运行的高级语言编写。可以是C#,F#等。使用任何一种语言使用其编译器编译的代码都不会生成机器代码。但是,您将获得由运行时编译和执行的中间语言代码

C / C ++代码(称为“非托管代码”)没有该特权,该程序是二进制文件,由操作系统加载到内存中,剩下的就是程序员必须照顾的问题。