日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CTS、CLS和CLR

發布時間:2023/12/16 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CTS、CLS和CLR 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CTS、CLS和CLR

    • CLR:公共語言運行庫
    • CTS:通用類型系統
    • CLS:公共語言規范
      • 代碼
    • 總結

CTS、CLS和CLR是.NET框架的基本概念,但往往成為程序員們忽視的部分。清楚理解三者的概念,有助于.NET程序員編寫高效安全的.NET程序。
所涉及到的知識點:

  • NET的基本概念
  • CLS、CTS和常用語言的關系

CLR:公共語言運行庫

CLR的全稱是公共語言運行庫(Common Language Runtime),讀者可以把CLR理解為一個包含運行.NET程序的引擎和一堆符合公共語言基礎結構的類庫的集合。CLR是一個規范的實現,我們開發的幾乎所有的.NET程序都基于CLR的類庫來實現,并且運行在CLR提供的運行引擎之上。所謂.NET框架,指的就是公共語言運行庫。
==公共語言基礎(CLI)==是微軟公司向ECMA提交的一份語言和數據格式規范,CLR是目前為止唯一一個公共語言基礎的實現版本。

CTS:通用類型系統

CTS的全稱是通用類型系統(Common Type System)。前文已經介紹了公共語言基礎(CLI)的概念,微軟公司提交的CLI規范,包括了公共類型系統(CTS)公共中間語言(CIL)、底部文件格式以及元數據格式等。公共類型系統定義了一個能夠在CLR上運行的語言規范。盡管有很多語言本身不符合CTS規范,但是通過加強編譯器,改變語言附加規范等手段,使得許多語言能夠編寫出能在CLR上運行的程序。
一種語言編寫的程序編譯能夠在CLR上運行,并不代表這種語言本身完全符合CTS的規范。例如C++語言,仍然保持了其不符合CTS規范的部分,并且在編譯時把這部分不符合CTS的代碼編譯成原始代碼而非中間代碼。

CLS:公共語言規范

最后來看一下CLS的概念。公共語言規范(CLS)是CTS的一個子集,它定義了希望編寫在.NET平臺上運行的程序的語言所需符合的最小規范。正因為.NET允許由不同語言編寫的程序一起執行,所以才制定出CLS規范,用以避免不同語言特性產生的錯誤。

代碼

為了更直觀地理解CLS,來看這段C#代碼:

using System; using System.Collections.Generic; using System.Text; //申明C符合CLS規范 [assembly: CLSCompliantAttribute(true)] namespace NET.MST.Second {public class CLS{private uint i; //這是一個私有成員,所以不違反CLS規范public CLS(){i=0;}static void Main(string[] args){}//這里不符合CLS規范,uint在CLS中沒有定義public uint GetI(){return i;}} }

該程序通過CLSCompliantAttribute特性來申明CLS類型需要符合CLS規范。C#中的uint類型在CLS中沒有對應的類型,所以uint是不符合CLS的語言部分。在CLS類的一開始,程序定義了一個uint類型的私有成員變量i,這里并沒有造成CLS類不符合CLS規 范,因為私有變量只對類內部可見。而之后程序定義了一個返回uint類型的公共方法,這里造成了整個CLS類型不符合CLS規范。編譯這段代碼,會得到以下警告:

C:\David\NET MST\第章\CLS.cs(23,21): warning CS3002: Return type of ‘NET.MST.Second.CLS.GetI()’ is not CLS-compliant

總結

現在,讀者已經理解了CLS和CTS的關系:

  • ==公共語言運行庫(CLR)==是一個CLI的實現,包含了.NET運行引擎和符合CLI的類庫。
  • ==通用類型系統(CTS)==包含在微軟公司提交的CLI規范中,定義了一個可以在CLR上運行的類型規范。
  • ==公共語言規范是(CTS)==的一個子集,定義了所有面向.NET的程序需要符合的最小規范集。

原文鏈接:https://www.cnblogs.com/dxying/p/4015285.html

總結

以上是生活随笔為你收集整理的CTS、CLS和CLR的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。