他在在哪里管理代码的?先编译成中间代码后再管理,还是在编译中间是管理?是不是编译中间代码后在管理的?谢谢 、 、 、
1ã对äºä¸ä¸ªå°è¦é¢å.NETå¹³å°è¿è¡å¼åç人æ¥è¯´,äºè§£ä¸ä¸.NETå¹³å°çæ´ä¸ªæææ¯é常æå¿ è¦ç,å¦å¾1æ示å³è¯´æäº.NETå¹³å°çæ´ä½ç»æ:
è¿ä¸ªå¾å°±æ¯èåç.NETå¹³å°ç»æå¾,ä»è¿ä¸ªå¾ä¸å¯ä»¥çå°,.NET Frameworkæ¯å¨Microsoft.NETå¹³å°ä¸å¼åçåºç¡,ASP.NETãWindows Forms åVS.NETé½ä¸è¿æ¯.NETå¹³å°å¼åçä¸é¨åï¼ä»çç¨äº.NETåºç¨ç¨åºçå¼ååå±ç¤ºã.NETå¹³å°çæ ¸å¿ææ¯ä¸º:éç¨è¯è¨è¿è¡æ¶ï¼CLR:Common Language Runtiomeï¼ãåºç±»åº(BCL:Base Class Library)ã.NETè¯è¨åVisual Studio.NET
ä»è¿ä¸ªå¾ä¸å¯ä»¥çåºï¼.NET Frameworkæ¯æ¶æå¨Windowså¹³å°ä¸çä¸ä¸ªèæçè¿è¡å¹³å°ï¼ä½ å¯ä»¥æ³è±¡å°æä¸å±Windowsæ¢åå
¶ä»çæä½ç³»ç»ï¼ä¾å¦è¯´Linux,ä¸æ ·å¯ä»¥å®ç°ä½¿ç¨ç¬¦åCLS(Common Language Specification,éç¨è¯è¨è§è)ç.NETè¯è¨ï¼(VB.NETãC#ãJScript.NETç)ï¼æ¥å建ASP.NETæWindows Formï¼å¯è½ä¼å«Linux Formsï¼åºç¨ç¨åºçåè½ï¼è¿å
¶å®å°±æ¯Mono计åè¦å®ç°çåè½ãæ以å¯ä»¥è¿ä¹è®¤ä¸ºï¼ç论ä¸ï¼C#æ¯ä¸ç§å¯ä»¥è·¨å¹³å°çè¯è¨ï¼è¿å¾è±¡JavaãC#å¦ä¸ä¸ªæ¯è¾è±¡Javaçå°æ¹æ¯ï¼å®ä¹æ¯ä¸ç§ï¼ç¹æ®æä¹ä¸çï¼è¯è¨ï¼åJavaä¸æ ·ï¼C#ç¼åçç¨åºä»£ç ä¹æ¯å
éè¿C#ç¼è¯å¨ç¼è¯ä¸ºä¸ç§ç¹æ®çåè代ç ï¼ (Microsoft Intermediate Language,MSILï¼å¾®è½¯)ä¸é´è¯è¨ï¼è¿è¡æ¶åç»ç±ç¹å®çç¼è¯å¨ï¼JITç¼è¯å¨ï¼Just In tIME, JITerï¼ç¼è¯ä¸ºæºå¨ä»£ç ï¼ä»¥ä¾æä½ç³»ç»æ§è¡.
ä¸ä»
æ¯C#è¯è¨ï¼ææ.NETè¯è¨(å°ä¼å
æ¬æ们常ç¨çå åç§ç°ä»£çç¼ç è¯è¨)é½å¯ä»¥ç¼åé¢åCLRçç¨åºä»£ç ï¼è¿ç§ä»£ç å¨.NETä¸è¢«ç§°ä¸ºæ管代ç (Managed Code)ï¼ææçManaged Codeé½ç´æ¥è¿è¡å¨CLRä¸ï¼å
·æä¸å¹³å°æ å
³çç¹æ§ã
解éæ§çè¯è¨å¾å®å ¨ï¼å¹¶ä¸å¯ä»¥éè¿ä»çè¿è¡å¹³å°ä¸ºå ¶èµäºæ´å¤çåè½ï¼ä¾å¦èªå¨å å管çï¼å¼å¸¸å¤ççï¼äºå®ä¸ï¼C#è¯è¨ç许å¤ç¹ç¹é½æ¯ç±CLRæä¾çï¼å¦å¾2æ示çCLRç»æå¾è¯´æäºè¿ä¸ç¹ã
2ãä»ä¸å¾å¯ä»¥çå°ï¼C#æå
·æç许å¤ç¹ç¹é½æ¯ç±CLRæä¾çï¼å¦ç±»åå®å
¨(Type Checker)ãåå¾åæ¶ï¼Garbage Collectorï¼ãå¼å¸¸å¤ç(Exception Manager)ãåä¸å
¼å®¹(COM Marshaler)çï¼å
·ä½ç说ï¼.NETä¸çCLR为å¼åè
æä¾å¦ä¸çæå¡ï¼
âå¹³å°æ å
³ï¼CLRå®é
ä¸æ¯æä¾äºä¸é¡¹ä½¿ç¨äºèææºææ¯ç产åï¼ä»ææ¶å¨æä½ç³»ç»ä¹ä¸ï¼å¹¶ä¸è¦æ±ç¨åºçè¿è¡å¹³å°æ¯ Windowsç³»ç»ï¼åªè¦æ¯è½å¤æ¯æå®çè¿è¡åºçç³»ç»ï¼é½å¯ä»¥å¨ä¸é¢è¿è¡.NETåºç¨ãæ以ï¼ä¸ä¸ªå®å
¨ç±æ管代ç ç»æçåºç¨ç¨åºï¼åªè¦ç¼è¯ä¸æ¬¡ï¼å°±å¯ä»¥å¨ä»»ä½æ¯æ.NETçå¹³å°ä¸è¿è¡.
âè·¨è¯è¨éæï¼CLRè¯åºå¼åè¿ä»¥ä»»ä½è¯è¨è¿è¡å¼åï¼ç¨è¿äºè¯è¨å¼åç代ç ï¼å¯ä»¥å¨CLRç¯å¢ä¸ç´§å¯æ ç¼çè¿è¡äº¤åè°ç¨ï¼ä¾å¦ï¼å¯ä»¥ç¨VB声æä¸ä¸ªåºç±»å¯¹è±¡ï¼ç¶åå¨C#代ç ä¸ç´æ¥å建次åºç±»çæ´¾çç±»ã
âèªå¨å
å管çï¼CLRæä¾äºææ¶æ¶éæºå¶ï¼å¯ä»¥èªå¨ç®¡çå
åãå½å¯¹è±¡æåéççå½å¨æç»éåï¼CLRä¼èªå¨éæ¾ä»ä»¬æå ç¨çå
å.
âè·¨è¯è¨å¼å¤ç
âçæ¬æ§å¶
â.NETå®å
¨
âç®åçç»ä»¶äºæä½æ§ã
âèªæè¿°ç»ä»¶ï¼èªæè¿°ç»ä»¶æ¯æå°æææ°æ®å代ç é½æ¾å¨ä¸ä¸ªæ件ä¸çæ§è¡æ件ãèªæè¯ç»ä»¶å¯ä»¥å¤§å¤§ç®åç³»ç»çå¼ååé
ç½®ï¼å¹¶ä¸æ¹è¿ç³»ç»çå¯é æ§ã
éç¨è¯è¨è¿è¡æ¶(CommonLanguageRuntiome,CLR)ææ©è¢«ç§°ä¸ºä¸ä¸ä»£Windowsæå¡è¿è¡æ¶(NGWS Runtime).å®æ¯ç´æ¥å»ºç«å¨æä½ç³»ç»ä¸çä¸ä¸ªèæç¯å¢ï¼ä¸»è¦çä»»å¡æ¯ç®¡ç代ç çè¿è¡ãCLRç°å¨æ¯æå åç§ç°ä»£çç¼ç¨è¯è¨ä¸ºå®ç¼å代ç ï¼ç¶å以ä¸ç§ä¸é´è¯è¨(Intermediate Langeoage,IL)代ç çå½¢æ被æ§è¡ã并ä¸ï¼CLRè¿æä¾äºè®¸å¤åè½ä»¥ç®å代ç çå¼åååºç¨é ç½®ï¼åæ¶ä¹æ¹åäºåºç¨ç¨åºçå¯é æ§ãå¦ä½ æç¥ï¼å¦ææç§è¯è¨çç¼è¯å¨æ¯ä»¥è¿è¡æ¶ä¸ºç®æ çï¼é£ä¹å©ç¨è¯¥è¯è¨å¼åçæç代ç å¨.NETä¸è¢«ç§°ä¸ºæ管代ç ï¼å 为è¿æ ·ç代ç æ¯ç´æ¥è¿è¡å¨CLRä¸çï¼æä»¥å ·æä¸å¹³å°æ å ³çç¹ç¹ã
å¨.NETå¹³å°ç»æå¾ä¸ï¼CLRçä¸é¢æ¯.NETçåºç±»åºï¼è¿ç»åºç±»åºå æ¬ä»åºæ¬è¾å ¥è¾åºå°æ°æ®è®¿é®çåæ¹é¢ï¼æä¾äºä¸ä¸ªç»ä¸çé¢å对象çï¼å±æ¬¡åçï¼å¯æ©å±çç¼ç¨æ¥å£ãä».NETå¹³å°ç»æå¾ä¸ä¹å¯ä»¥çå°ï¼åºç±»åºå¯ä»¥è¢«åç§è¯è¨è°ç¨åæ©å±,ä¹å°±æ¯è¯´ä¸ç®¡æ¯ C#ï¼VB.NETè¿æ¯VC++.NET,é½å¯ä»¥èªç±çè°ç¨ï¼.NETçç±»åºï¼å 为C#èªèº«åª
很实在 、 、谢谢、 、 、对 、 、 、
本回答被网友采纳本回答被提问者采纳