.NET Framework中的语言互操作性(基本概念)是什么?

时间:2013-06-21 19:06:59

标签: .net

我正在阅读维基百科中的.NET Framework文章,第一段描述了这个框架的一般概念,它说:

  

它包含一个大型库,并提供跨多种编程语言的语言互操作性(每种语言都可以使用其他语言编写的代码)。

当它宣称.NET提供语言互操作性时,共享的是什么:代码或代码功能?

例如,我有以下简单代码:

class Math
{
   public double Pow( double a, double b)
   {
      return Math.Pow(a,b);
   }
}

我是否可以访问C#代码或Math对象的实例化?

5 个答案:

答案 0 :(得分:10)

编译C#程序时,会将其编译为IL(中间语言)。然后,任何其他.NET语言都可以使用该编译的程序,例如,Visual Basic程序可以引用您的程序,创建Math类的实例并使用它。

Visual Basic不关心(或知道)您的Math类是用C#编写的,它看到的只是一个.NET类。这是语言互操作性。如果VB.NET只能使用用VB.NET编写的类,而C#只能使用C#编写的类,那么这些语言就无法互操作。

答案 1 :(得分:4)

语言互操作性是代码与使用不同编程语言编写的代码交互的能力。语言互操作性有助于最大限度地重用代码,从而提高开发过程的效率。用任何.NET语言编写并编译的每个代码都可以从其他.NET语言中重用。

答案 2 :(得分:2)

如果你想在VB.NET中使用这个类,你应该没有问题。

Dim math As New Math()
Dim result As Double
result = math.Pow(2, 32)

编译.NET代码时,无论使用何种语言编写它,都会产生MSIL,无论是C#,VB.NET,F#等,生成的MSIL代码都可以被使用。与写作的语言不同的语言。

几乎在所有的时间里,用A语言编写的类就像用B语言编写一样。

例如,您可以在C ++ / CLI中编写用于特殊计算的DLL,并编写在C#中使用该库的程序。这两者是兼容的,而不必使用诸如P / Invoke之类的互操作方法。

大多数.NET Framework本身都是用C#编写的。但它与VB.NET和朋友完全兼容。

答案 3 :(得分:1)

语言互操作性是指使用通用语言进行编译的.NET功能,无论开发人员使用何种编码语言。添加执行JIT(即时)编译器支持的代码的能力。

公共语言运行时或CLR ("公共语言运行时环境")是运行在Microsoft .NET平台上的程序代码的运行时环境。

CLR是.NET框架的真正核心,这是一个执行环境,其中加载了以不同语言开发的应用程序,扩展了操作系统的服务集(W2k和W2003)。它允许集成.Net平台支持的不同语言的项目,如C ++,Visual Basic,C#等。

使用CLR的开发人员使用.NET兼容语言编写源代码,例如C#或Visual Basic

CLR负责在运行时使用编译器将名为Common Intermediate Language(CIL ,以前称为MSIL,由Microsoft Intermediate Language)编写的中间代码形式编译为本机机器代码。

执行它需要第二步,JIT(即时)编译器是生成在客户端平台上执行的实际机器代码的编译器。这是通过.NET独立于硬件平台实现的。当程序调用方法时,CLR将执行JIT编译。获得的可执行代码存储在计算机的缓存中,仅在源代码发生变化时才重新编译。

不应将CLR与虚拟机混淆,因为一旦代码被编译,它就会本机运行而无需底层硬件上的抽象层介入。它是公共语言基础结构(CLI)标准的实现。

答案 4 :(得分:0)

所有面向对象的编程语言都提供代码的可重用性,但仅提供语言支持。.net语言提供CIL的跨语言可重用性,即从一种.net语言生成的CIL代码将来可从任何其他.net语言中重用。我们称之为语言互操作性

enter image description here

如果任何两种语言都希望相互协作,则需要跨越两个障碍

  1. 匹配错误。
  2. 数据类型不匹配。

.Net克服了其他语言的障碍和优势之一。

有关更多详细信息,https://www.csharpatoz.com/2017/10/net-basic-1.html