2013-06-21 67 views
2

我讀維基百科.NET Framework文章第一段介紹了這個框架的總體思路,並說:什麼是.NET Framework中的語言互操作性(基本概念)?

它包括一個大型圖書館,並提供語言互操作性(每種語言可以使用代碼編寫在其他語言中)跨幾種編程語言。

當它聲明.NET提供語言互操作性時,共享什麼:代碼或代碼功能?

例如,我有以下簡單的代碼:

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

我必須進入C#代碼或數學對象的實例?

+3

'^'是C#中的二進制XOR操作...不是'Pow'。 – rae1

+0

此外,當他們提到語言互操作性時,它們指的是.NET框架支持的所有語言(即C#,F#,VB ...)的交互,而不是代碼或本身的功能。 – rae1

+0

您將很難從其他語言訪問「內部」類。你的意思是讓你的課堂成爲「公共」嗎? – svick

回答

9

當你編譯你的C#程序時,它被編譯成IL(中級語言)。該編譯後的程序可以被任何其他.NET語言使用,例如Visual Basic程序可以引用你的程序,創建Math類的一個實例並使用它。

Visual Basic不關心(或者知道)你的Math類是用C#編寫的,它看到的只是一個.NET類。這是語言互操作性。如果VB.NET只能使用VB.NET編寫的類,並且C#只能使用C#編寫的類,那麼這些語言將不能互操作。

2

如果你想在VB.NET中使用這個類,你應該沒有問題。

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

當.NET代碼被編譯,它導致MSIL,無論何種語言的用於寫,是它的C#,VB.NET,F#等將所得MSIL代碼可以由使用幾乎所有的時間,就好像它是書面語言B.

例如可以使用不同的語言比它寫在了一個。

寫在一個語言中的一類,你可以寫在C++/CLI中用於特殊計算的DLL,並編寫一個在C#中使用該庫的程序。這兩者是兼容的,無需使用諸如P/Invoke之類的互操作方法。

大多數.NET Framework本身都是用C#編寫的。但它完全兼容VB.NET和朋友。

4

語言互操作性是代碼與使用不同編程語言編寫的代碼進行交互的能力。語言互操作性可以幫助最大限度地重用代碼,從而提高開發過程的效率。用任何.NET語言編寫並編譯的代碼都可以從其他.NET語言中重用。

1

語言互操作性指的是使用公共語言進行編譯的.NET功能,無論開發人員使用何種編碼語言。增加執行JIT(Just-In-Time)編譯器支持的代碼的能力。

公共語言運行時或CLR(「公共語言運行時環境」)是運行在Microsoft .NET平臺上的程序代碼的運行時環境。

的CLR是.NET框架的真正核心,執行環境,以不同的語言開發的應用程序被加載,擴展設置操作系統(W2K和W2003)的服務。它允許整合.Net平臺支持的不同語言的項目,例如C++,Visual Basic,C#等。

開發人員使用CLR寫在.NET兼容語言的源代碼,如C#或Visual Basic

CLR是負責彙編稱爲公共中間語言的中間代碼的形式(CIL ,以前稱爲MSIL,由Microsoft中間語言),本地機器代碼,在運行時使用編譯器。

執行它需要第二步,JIT(Just-In-Time)編譯器是生成在客戶端平臺上執行的實際機器代碼的編譯器。這是通過.NET獨立於硬件平臺實現的。隨着程序調用方法,JIT編譯由CLR執行。獲得的可執行代碼存儲在計算機的緩存中,僅在源代碼發生變化時纔會重新編譯。

CLR不應與虛擬機混淆,因爲一旦代碼編譯完成,它就會在本機運行,而不需要底層硬件上的抽象層的干預。它是通用語言基礎結構(CLI)標準的實現。