锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久香蕉国产线看观看99,久久免费国产精品,蜜臀久久99精品久久久久久小说http://m.shnenglu.com/BeyondCN/category/8519.htmlzh-cnSat, 08 Nov 2008 16:30:19 GMTSat, 08 Nov 2008 16:30:19 GMT60ISO C++瀹炵幇 綾諱技 C#鐨?Delegatehttp://m.shnenglu.com/BeyondCN/archive/2008/11/06/66180.htmlBeyondCNBeyondCNThu, 06 Nov 2008 15:29:00 GMThttp://m.shnenglu.com/BeyondCN/archive/2008/11/06/66180.htmlhttp://m.shnenglu.com/BeyondCN/comments/66180.htmlhttp://m.shnenglu.com/BeyondCN/archive/2008/11/06/66180.html#Feedback0http://m.shnenglu.com/BeyondCN/comments/commentRss/66180.htmlhttp://m.shnenglu.com/BeyondCN/services/trackbacks/66180.html闃呰鍏ㄦ枃

BeyondCN 2008-11-06 23:29 鍙戣〃璇勮
]]>
Visual C++ .NET緙栫▼錛氭墭綆++姒傝堪http://m.shnenglu.com/BeyondCN/archive/2008/10/24/64921.htmlBeyondCNBeyondCNFri, 24 Oct 2008 03:43:00 GMThttp://m.shnenglu.com/BeyondCN/archive/2008/10/24/64921.htmlhttp://m.shnenglu.com/BeyondCN/comments/64921.htmlhttp://m.shnenglu.com/BeyondCN/archive/2008/10/24/64921.html#Feedback0http://m.shnenglu.com/BeyondCN/comments/commentRss/64921.htmlhttp://m.shnenglu.com/BeyondCN/services/trackbacks/64921.html
2000騫?鏈堬紝Microsoft鎺ㄥ嚭浜?#8220;Microsoft.NET涓嬩竴浠d簰鑱旂綉杞歡鍜屾湇鍔℃垬鐣?#8221;錛屽紩璧稩T琛屼笟鐨勫箍娉涘叧娉ㄣ?000騫?鏈堬紝Microsoft鍦ㄦ棫閲戝北鍙戝竷浜咵nterprise 2000銆傚悓鏈堬紝Microsoft鍘熸昏鍏奸甯墽琛屽畼椴嶅皵榛樻潵鍒頒腑鍥藉氨“涓嬩竴浠d簰鑱旂綉”鐨勪富棰樿繘琛屾紨璁詫紝鍦ㄤ腑鍥芥巰璧蜂簡涓鑲?#8220;.NET鏃嬮”銆?000騫?1鏈堬紝Microsoft鍦–omdex璁$畻鏈哄ぇ灞曚笂鍙戝竷浜哣isual Studio.NET杞歡錛屽茍灞曠ず浜嗗叾.NET鍙戝睍鎴樼暐鐨勬鏋朵綋緋誨拰寮鍙戝伐鍏風殑鐩稿叧鐗規э紝鍏ㄩ潰鍔犻熶簡Microsoft浠?NET鎶鏈繘鍐涘競鍦虹殑姝ヤ紣銆?#160;

銆銆Microsoft鐨?NET鎴樼暐鎰忓懗鐫錛歁icrosoft浠ュ強鍦∕icrosoft騫沖彴涓婄殑寮鍙戣呭皢浼氬埗閫犳湇鍔★紝鑰屼笉鏄埗閫犺蔣浠躲傚湪鏈潵鍑犲勾涔嬪唴錛孧icrosoft灝嗛檰緇彂甯冩湁鍏?NET鐨勫鉤鍙板拰宸ュ叿錛岀敤浜庡湪鍥犵壒緗戜笂寮鍙慦eb鏈嶅姟銆傞偅鏃訛紝宸ヤ綔鍦?NET涓婄殑鐢ㄦ埛銆佸紑鍙戜漢鍛樺拰IT宸ヤ綔浜哄憳閮戒笉鍐嶈喘涔拌蔣浠躲佸畨瑁呰蔣浠跺拰緇存姢杞歡銆傚彇鑰屼唬涔嬬殑鏄紝浠栦滑灝嗗畾鍒舵湇鍔★紝杞歡浼氳嚜鍔ㄥ畨瑁咃紝鎵鏈夌殑緇存姢鍜屽崌綰т篃浼氶氳繃浜掕仈緗戣繘琛屻?#8220;Microsoft.NET 浠h〃浜嗕竴涓泦鍚堛佷竴涓幆澧冦佷竴涓彲浠ヤ綔涓哄鉤鍙版敮鎸佷笅涓浠nternet鐨勫彲緙栫▼緇撴瀯銆?#8221;榪欏氨鏄矋灝旈粯瀵?NET鐨勬弿榪般?br>

銆銆浣滀負.NET鐨勬渶鏂扮壒鎬х粍鎴愰儴鍒嗭紝Microsoft .NET Framework鏄竴涓敤浜庢瀯寤猴紝閮ㄧ講鍜岃繍琛學eb鏈嶅姟鍙婂簲鐢ㄧ▼搴忕殑騫沖彴銆傚畠涓哄皢鐜版湁鎶曡祫涓庝笅涓浠e簲鐢ㄧ▼搴忓拰鏈嶅姟鐨勯泦鎴愭彁渚涗簡楂樹駭鐨勶紝鍩轟簬鏍囧噯鐨勶紝澶氳璦鐜錛屽悓鏃跺畠榪樼敤浜庤В鍐矷nternet綰у簲鐢ㄧ▼搴忕殑閮ㄧ講鍜屾搷浣滈棶棰樸?NET妗嗘灦鍖呭惈涓変釜涓昏閮ㄥ垎錛氶氱敤璇█榪愯鏃訛紝涓緇勫眰嬈″寲鐨勭粺涓鐨勭被搴擄紝鍙婄粍浠跺寲鐗堟湰鐨勫姩鎬佹湇鍔″櫒涓婚〉(縐頒負ASP.NET)銆?br>
銆銆鐢ㄤ簬寮鍙?NET Framework鐨勮璦鏈塚isual C#銆乂B.NET鍜孋++鎵樼鎵╁睍(Managed Extensions for C++)銆傚叾涓瑿#鏄紑鍙?NET鐨勫厓璇█錛岃孋++鎵樼鎵╁睍鏄湪C++鍩虹涓婂緩绔嬭搗鏉ョ殑錛岀敤鏉ヤ負Visual C++紼嬪簭鍛樺紑鍙?NET妗嗘灦搴旂敤紼嬪簭鑰岃璁°備負鍙欒堪鏂逛究錛屾垜浠皢C++鎵樼鎵╁睍灝辯О涔嬩負“鎵樼C++”銆?br>涓轟簡甯姪C/C++浠ュ強Visual C++紼嬪簭鍛樻垨鐖卞ソ鑰呭揩閫熶嬌鐢ㄦ墭綆++寮鍙?NET Framework紼嬪簭錛屾垜浠皢闄嗙畫鎺ㄥ嚭鐩稿叧鐨勪竴緋誨垪鏂囩珷銆?br>
銆銆鏈瘒“鎵樼C++姒傝堪”涓昏璁茶堪浜嗕粈涔堟槸鎵樼C++銆佸紑鍙?NET Framework(妗嗘灦)鐨勯」鐩被鍨嬩互鍙婁笌鏍囧噯C++涔嬮棿鐨勫尯鍒?br>
銆銆1銆佷粈涔堟槸鎵樼C++錛?/font>

銆銆鍦ㄥ洖絳旇繖涓棶棰橈紝棣栧厛瑕佹悶娓呮浠涔堟槸“鎵樼”(Managed)銆傛墭綆℃槸.NET鐨勪竴涓笓闂ㄦ蹇碉紝瀹冩槸铻嶄簬閫氱敤璇█榪愯鏃?CLR)涓殑涓縐嶆柊鐨勭紪紼嬬悊蹇碉紝鍥犳鎴戜滑瀹屽叏鍙互鎶?#8220;鎵樼”瑙嗕負“.NET”銆傞偅涔堜粈涔堟槸“閫氱敤璇█榪愯鏃?#8221;錛熼氱敤璇█榪愯鏃舵槸.NET 妗嗘灦搴旂敤紼嬪簭鐨勬墽琛屽紩鎸氥傚畠鎻愪緵浜嗚澶氭湇鍔★紝鍏朵腑鍖呮嫭錛氫唬鐮佺鐞?瑁呭叆鍜屾墽琛?銆佺被鍨嬪畨鍏ㄦч獙璇併佸厓鏁版嵁(楂樼駭綾誨瀷淇℃伅)璁塊棶銆佷負綆$悊瀵硅薄綆$悊鍐呭瓨銆佺鐞嗕唬鐮侊紝COM瀵硅薄鍜岄鐢熸垚鐨凞LLs(闈炵鐞嗕唬鐮佸拰鏁版嵁)鐨勪氦浜掓搷浣滄с佸寮鍙戜漢鍛樻湇鍔$殑鏀寔絳夌瓑銆?br>
銆銆涔熷氨鏄錛屼嬌鐢ㄦ墭綆++鎰忓懗鐫錛屾垜浠殑浠g爜鍙互琚獵LR鎵綆$悊錛屽茍鑳藉紑鍙戝嚭鍏鋒湁鏈鏂扮壒鎬у鍨冨溇鑷姩鏀墮泦銆佺▼搴忛棿鐩鎬簰璁塊棶絳夌殑.NET妗嗘灦搴旂敤紼嬪簭銆?br>
銆銆鐢辨墭綆℃蹇墊墍寮曞彂鐨凜++搴旂敤紼嬪簭鍖呮嫭鎵樼浠g爜銆佹墭綆℃暟鎹拰鎵樼綾諱笁涓粍鎴愰儴鍒嗐傘銆

銆銆(1) 鎵樼浠g爜錛?Net鐜鎻愪緵浜嗚澶氭牳蹇冪殑榪愯(RUNTIME)鏈嶅姟錛屾瘮濡傚紓甯稿鐞嗗拰瀹夊叏絳栫暐銆備負浜嗚兘浣跨敤榪欎簺鏈嶅姟錛屽繀欏昏緇欒繍琛岀幆澧冩彁渚涗竴浜涗俊鎭唬鐮?鍏冩暟鎹?錛岃繖縐嶄唬鐮佸氨鏄墭綆′唬鐮併傛墍鏈夌殑C#銆乂B.NET銆丣Script.NET榛樿鏃墮兘鏄墭綆$殑錛屼絾Visual C++榛樿鏃朵笉鏄墭綆$殑錛屽繀欏誨湪緙栬瘧鍣ㄤ腑浣跨敤鍛戒護琛岄夐」(/CLR)鎵嶈兘浜х敓鎵樼浠g爜銆?br>
銆銆(2) 鎵樼鏁版嵁錛氫笌鎵樼浠g爜瀵嗗垏鐩稿叧鐨勬槸鎵樼鏁版嵁銆傛墭綆℃暟鎹槸鐢卞叕鍏辮璦榪愯鐨勫瀮鍦懼洖鏀跺櫒榪涜鍒嗛厤鍜岄噴鏀劇殑鏁版嵁銆傞粯璁ゆ儏鍐典笅錛孋#銆乂isual Basic 鍜?JScript.NET 鏁版嵁鏄墭綆℃暟鎹備笉榪囷紝閫氳繃浣跨敤鐗規畩鐨勫叧閿瓧錛孋# 鏁版嵁鍙互琚爣璁頒負闈炴墭綆℃暟鎹俈isual C++鏁版嵁鍦ㄩ粯璁ゆ儏鍐典笅鏄潪鎵樼鏁版嵁錛屽嵆浣垮湪浣跨敤 /CLR 寮鍏蟲椂涔熶笉鏄墭綆$殑銆?br>
銆銆(3) 鎵樼綾?/strong>錛氬敖綆isual C++鏁版嵁鍦ㄩ粯璁ゆ儏鍐典笅鏄潪鎵樼鏁版嵁錛屼絾鏄湪浣跨敤C++鐨勬墭綆℃墿灞曟椂錛屽彲浠ヤ嬌鐢?#8220;__gc”鍏抽敭瀛楀皢綾繪爣璁頒負鎵樼綾匯傚氨鍍忚鍚嶇О鎵鏄劇ず鐨勯偅鏍鳳紝瀹冭〃紺虹被瀹炰緥鐨勫唴瀛樼敱鍨冨溇鍥炴敹鍣ㄧ鐞嗐傚彟澶栵紝涓涓墭綆$被涔熷畬鍏ㄥ彲浠ユ垚涓?.NET 妗嗘灦鐨勬垚鍛橈紝鐢辨鍙互甯︽潵鐨勫ソ澶勬槸錛屽畠鍙互涓庡叾浠栬璦緙栧啓鐨勭被姝g‘鍦拌繘琛岀浉浜掓搷浣滐紝濡傛墭綆$殑C++綾誨彲浠ヤ粠Visual Basic綾葷戶鎵跨瓑銆備絾鍚屾椂涔熸湁涓浜涢檺鍒訛紝濡傛墭綆$被鍙兘浠庝竴涓熀綾葷戶鎵跨瓑銆傞渶瑕佽鏄庣殑鏄紝鍦ㄦ墭綆++搴旂敤紼嬪簭涓棦鍙嬌鐢ㄦ墭綆$被涔熷彲浠ヤ嬌鐢ㄩ潪鎵樼綾匯傝繖閲岀殑闈炴墭綆$被涓嶆槸鎸囨爣鍑咰++綾伙紝鑰屾槸浣跨敤鎵樼C++璇█涓殑__nogc鍏抽敭瀛楃殑綾匯?br>
2銆佺敤鎵樼C++鍙互寮鍙?NET妗嗘灦鐨勯」鐩被鍨?br>
銆銆浣跨敤鎵樼C++搴旇鏄疌++紼嬪簭鍛樼紪鍐?NET妗嗘灦搴旂敤紼嬪簭鏈濂界殑涓縐嶉夋嫨錛岄氳繃闆嗘垚鍦╒isual Studio.NET寮鍙戠幆澧冪殑鎵樼C++鍚戝錛屾垜浠彲浠ュ垱寤轟互涓嬪嚑縐嶅紑鍙?NET妗嗘灦鐨勯」鐩被鍨嬶細

銆銆(1) 鎵樼C++搴旂敤紼嬪簭:鐢ㄦ潵鍒涘緩涓涓敮鎸佹墭綆℃墿灞曠殑鍗曠嫭C++搴旂敤紼嬪簭錛屼嬌鐢ㄥ畠榪樺彲鍒涘緩浠諱綍綾誨瀷鐨勫簲鐢ㄧ▼搴忥紝鍖呮嫭.NET妗嗘灦瀹㈡埛搴旂敤紼嬪簭銆?br>
銆銆(2) 鎵樼C++綾誨簱:鐢ㄦ潵鍒涘緩涓涓敮鎸佹墭綆℃墿灞曠殑C++DLL錛屼嬌鐢ㄥ畠鍙互鐢熸垚涓涓兘琚?NET妗嗘灦搴旂敤紼嬪簭璋冪敤鐨勬墭綆$被鍨嬬殑緇勪歡銆?br>
銆銆(3) 鎵樼C++絀洪」鐩細鐢ㄦ潵鍒涘緩涓涓┖鐨勬墭綆¢」鐩紝璇ラ」鐩彧鍚湁鏀寔鎵樼鎵╁睍鐨勬紜紪璇戝拰閾炬帴鐨勫紑鍏抽夐」銆備嬌鐢ㄥ畠鑳藉皢涓涓凡鏈夌殑C++婧愭枃浠惰繘鍏ュ埌涓涓墭綆$幆澧冧腑銆?br>
銆銆(4) 鎵樼C++ Web鏈嶅姟錛氱敤浜庡垱寤轟袱涓」鐩紝涓涓槸C++鎵樼鎵╁睍欏圭洰錛屽彟涓涓槸閮ㄧ講欏圭洰銆?br>
銆銆3銆佹墭綆++涓庢爣鍑咰++鐨勪富瑕佸尯鍒?/font>

銆銆灝界鎵樼C++鏄粠鏍囧噯C++寤虹珛鑰屾潵鐨勶紝浣嗗畠涓庢爣鍑咰++鏈夌潃鏈川涓婄殑鍖哄埆錛岃繖涓昏浣撶幇鍦ㄤ互涓嬪嚑涓柟闈細

銆銆(1) 騫挎硾閲囩敤“鍚嶇О絀洪棿”(namespace)

銆銆鍚嶇О絀洪棿鏄被鍨嬬殑涓縐嶉昏緫鍛藉悕鏂規錛?NET浣跨敤璇ュ懡鍚嶆柟妗堢敤浜庡皢綾誨瀷鎸夌浉鍏沖姛鑳界殑閫昏緫綾誨埆榪涜鍒嗙粍錛屽埄鐢ㄥ悕縐扮┖闂村彲浠ヤ嬌寮鍙戜漢鍛樻洿瀹規槗鍦ㄤ唬鐮佷腑嫻忚鍜屽紩鐢ㄧ被鍨嬨傚綋鐒訛紝鎴戜滑涔熷彲灝嗗悕縐扮┖闂寸悊瑙f垚鏄竴涓?#8220;綾誨簱鍚?#8221;銆?#160;

銆銆灝界寰堟棭Microsoft灝卞湪Visual C++涓敮鎸佸悕縐扮┖闂寸殑緙栫▼鏂瑰紡錛屼絾鏄緢灝戝紩璧稸isual C++紼嬪簭鍛樼殑鏅亶鍏蟲敞銆傜幇鍦ㄥ湪鎵樼C++紼嬪簭涓紝鎴戜滑蹇呴』浣跨敤榪欎竴鏂瑰紡錛屽嵆浣跨敤#using鍜寀sing鍏抽敭瀛椼備緥濡備笅闈㈢殑綆鍗曠▼搴忎唬鐮佹槸鍦ㄦ帶鍒跺彴涓婅緭鍑?#8220;Hello World”錛?br>
#using 
using namespace System;
int main(void)
{
Console::WriteLine(S"Hello World");
return 0;
}

銆銆浠g爜涓紝#using鏄敤鏉ュ皢涓涓厓鏁版嵁鏂囦歡杈撳叆鍒版墭綆++紼嬪簭涓紝榪欎簺鏂囦歡鍙互鏄寘鍚墭綆℃暟鎹拰緇撴瀯鐨凪SIL (Microsoft intermediate language錛屽井杞腑闂磋璦)鏂囦歡錛屽DLL銆丒XE銆丱BJ鏂囦歡絳夈俶scorlib.dll鏄?NET妗嗘灦鐨勪竴涓牳蹇冪被搴擄紝鍖呭惈涓昏鐨勫悕縐扮┖闂碨ystem銆傜▼搴忕殑絎簩琛屼唬鐮?#8220;using namespace System;”鐢ㄦ潵浣跨敤System鍚嶇О絀洪棿銆係ystem鏄?NET妗嗘灦鏍瑰悕縐扮┖闂達紝鍖呭惈鏈鍩烘湰鐨勭被鍨嬶紝濡傜敤浜庢暟鎹祦鐨勮緭鍏?杈撳嚭鐨凷ystem::IO絳夈?br>
銆銆鍦ㄥ鎵樼C++紼嬪簭寮鍙戠殑涓嶆柇娣卞叆錛屾垜浠笉涔呭氨浼氬彂鐜幫紝璁稿綾誨瀷鐨勫紩鐢ㄩ兘瑕佸湪紼嬪簭鐨勫墠闈嬌鐢?using鍜寀sing鏉ヨ繘琛屻?br>
銆銆(2) 鍩烘湰鏁版嵁綾誨瀷鐨勫彉鍖?/strong>

銆銆鎴戜滑鐭ラ亾錛屾爣鍑咰++璇█鐨勬暟鎹被鍨嬫槸闈炲父涓板瘜鐨勩傝屾墭綆++鐨勬暟鎹被鍨嬫洿鍔犱赴瀵岋紝涓嶄粎鍖呭惈浜嗘爣鍑咰++涓殑鏁版嵁綾誨瀷錛岃屼笖鏂板浜哶_int64(64浣嶆暣鍨?銆丏ecimal(96浣嶅崄榪涘埗鏁?銆丼tring*(瀛楃涓茬被鍨?鍜孫bject*(瀵硅薄綾誨瀷)絳夌被鍨嬶紝琛?-1鍒楀嚭瀹冧滑鍚勮嚜鏁版嵁綾誨瀷銆?br>
綾誨瀷鎻忚堪鏍囧噯C++綾誨瀷鍚?/td>鎵樼C++綾誨瀷鍚?/td>闀垮害(浣?
甯冨皵鍨?/td>boolbool8
瀛楃鍨?/td>charsigned char8
鏃犵鍙峰瓧絎﹀瀷unsigned charchar8
鐭暣鍨?/td>short [int]short16
鏃犵鍙風煭鏁村瀷unsigned short [int]unsigned short16
鏁村瀷intint 鎴?long32
鏃犵鍙鋒暣鍨?/td>unsigned [int]unsigned int 鎴?long32
闀挎暣鍨?/td>long [int]long32
鏃犵鍙烽暱鏁村瀷unsigned long [int]unsigned long32
鍗曠簿搴︽誕鐐瑰瀷floatfloat32
鍙岀簿搴︽誕鐐瑰瀷doubledouble64
闀垮弻綺懼害嫻偣鍨?/td>long double--64
Unicode瀛楃--wchar_t16
64浣嶆暣鍨?/td>--__int6464
鏃犵鍙?4浣嶆暣鍨?/td>--unsigned __int6464
96浣嶅崄榪涘埗鍊?/td>--Decimal96
瀵硅薄綾誨瀷--Object*32
瀛楃涓茬被鍨?/td>--String*--


銆銆闇瑕佹敞鎰忕殑鏄紝String鍜孫bject鍦ㄥ畾涔変竴涓彉閲忔椂錛屾敞鎰忚鏈夋槦鍙?“*”)錛屼絾榪欎釜鍙橀噺涓嶆槸鎸囬拡鍙橀噺錛岃繖涓庢爣鍑咰++鐨勫惈涔夋槸涓嶄竴鏍風殑銆備緥濡備笂闈㈢殑浠g爜鍙互鏀逛負錛?br>
#using 
using namespace System;
int main(void)
{
String* hello = S"Hello World";
Console::WriteLine(hello);
return 0;
}
(3) 鏂板涓変釜鎵樼C++綾誨瀷錛歘_gc class銆乢_value class鍜宊_gc interface

銆銆涓涓猒_gc綾繪垨緇撴瀯鎰忓懗鐫璇ョ被鎴栫粨鏋勭殑鐢熷懡鍛ㄦ湡鏄敱.NET寮鍙戝鉤鍙拌嚜鍔ㄧ鐞嗗強鍨冨溇鑷姩鏀墮泦錛岀敤鎴蜂笉蹇呰嚜宸插幓璋冪敤delete鏉ュ垹闄ゃ傚畾涔変竴涓猒_gc綾繪垨緇撴瀯鍜屾爣鍑咰++鍩烘湰鐩鎬技錛屾墍涓嶅悓鐨勬槸鍦╟lass鎴杝truct鍓嶅姞涓奯_gc錛屼緥濡備笅闈㈢殑浠g爜錛?br>
__gc class G {
public:
int k;
int sum(int);
};

G::sum(int i) {return i*(i + 1)/2;}
int main()
{
G * g = new G;
Console::WriteLine(g->sum(4)); // 緇撴灉杈撳嚭10
return 0;
}

銆銆浣嗚娉ㄦ剰錛?/font>

銆銆A. 涓涓猒_gc綾諱笉鑳戒粠涓涓潪鎵樼綾諱腑緇ф壙錛屼笖涓嶈兘鍖呭惈浠庡畠媧劇敓鐨勯潪鎵樼綾匯備絾涓涓猒_gc綾繪渶澶氬彲浠ヤ粠涓涓墭綆$被涓戶鎵褲?br>
銆銆B. 涓涓猒_gc綾諱笉鑳藉畾涔夋垚涓涓弸鍏冪被鎴栧寘鍚竴涓弸鍏冩垚鍛樺嚱鏁般傛墍璋撳弸鍏冨嚱鏁幫紝鏄敤鏉ヨ澶栭儴鍑芥暟璁塊棶綾諱腑鐨勭鏈夊拰淇濇姢綾誨瀷鎴愬憳銆?br>
銆銆C. 涓涓猒_gc綾諱笉鑳藉0鏄庢垨瀹氫箟浠ュ強閲嶈澆new鎴杁elete鎿嶄綔浠ュ強涓嶈兘鍖呭惈using絳夊0鏄庛?br>
銆銆__value綾繪槸鐢ㄦ潵浣跨敤鍏鋒湁鐭敓鍛芥湡鐨勫皬鍨嬫暟鎹」錛屽畠涓嶅悓浜巁_gc綾匯俖_gc綾繪暟鎹垎閰嶅湪CLR鍫嗕腑錛岃宊_value綾誨璞℃槸鍦ㄨ繍琛屾爤鎴栫О涓篘DP(.NET Developer Platform錛?NET寮鍙戣呭鉤鍙?鍫嗕腑鍒涘緩鐨勶紝浠庤岄伩鍏嶄簡鍨冨溇鍥炴敹鍣ㄤ笉鏂垎閰嶅拰閲婃斁絀洪棿鑰屽甫鏉ョ殑寮閿銆備竴涓猒_value綾誨彲浠ュ0鏄庢垚涓轟竴涓眬閮ㄥ彉閲忋佸弬鏁板拰榪斿洖鍊鹼紝涔熷彲宓屽叆鍒頒竴涓猒_gc綾諱腑鎴栨槸浣滀負涓涓潤鎬佸彉閲忔垨鍦–++鍫嗕腑鍒嗛厤鐨勫彉閲忋備緥濡備笅闈㈢殑浠g爜錛?br>
#using 
using namespace System;
__value struct V { int i; };
__gc struct G { V v; }; // 宓屽叆鍒癬_gc綾諱腑
V f(V v) { // 瀹氫箟涓涓叏灞鍑芥暟錛屽叾鍊煎瓨鍌ㄥ湪榪愯鏍堜腑
v.i += 1; // 涓嶅獎鍝嶅師鏉ュ艦鍙倂鐨勫?br>return v; // 榪斿洖V緇撴瀯綾誨瀷鐨勫?br>}
int main(void) 
{
V v1 = {10}; // 鍦ㄨ繍琛屾爤涓0鏄庡茍鍒濆鍖?br>V v2 = f(v1); // 璋冪敤f鍑芥暟錛屾鏃秜1涓殑i涓?0錛岃寁2涓殑i涓?1
G *pG = new G; // 涓篏瀹炰緥鍒嗛厤鍫嗙┖闂?br>pG->v = v1; // pG鐨剉涓殑i涓?0
pG->v.i += v2.i; // pG鐨剉涓殑i涓?0+11=21
Console::WriteLine(v1.i); // 杈撳嚭緇撴灉涓?0
Console::WriteLine(v2.i); // 杈撳嚭緇撴灉涓?1
Console::WriteLine(pG->v.i); // 杈撳嚭緇撴灉涓?1
return 0;
}

銆銆闄ゆ涔嬪錛屾墍鏈夌殑__gc瀵硅薄閮芥槸浠庣被System::Object媧劇敓鑰屾潵錛屽洜鑰岃兘澶熷緢瀹規槗浣跨敤浣滅敤鍦╛_gc綾諱腑鐨勯泦鍚堝拰鏄犲皠鍔熻兘銆傜劧鑰宊_value綾誨瀷騫舵病鏈変笌榪欎釜鍩虹被鎵鍏變韓錛屽洜鑰屼笉鑳界洿鎺ュ皢__value浣滀負鍑芥暟涓殑Object*瀹炲弬銆備負浜嗚В鍐寵繖涓棶棰橈紝.NET鍏佽鎴戜滑浣跨敤__box鍏抽敭瀛楀皢涓涓猒_value綾誨瀷瑙嗕負涓涓猒_gc瀵硅薄銆傛鏃禵_value綾誨瀷琚皝瑁呮垚涓涓猒_gc綾繪々瀛?Stub)錛屽茍琚鍒跺埌NDP鍫嗕腑銆傜敱浜庡湪鎵樼C++涓紝box涓嶅叿澶囬殣寮忚漿鎹㈢殑鍔熻兘錛屽洜姝ゅ湪杞崲鏃跺繀欏繪寚鏄庤漿鎹㈢殑綾誨瀷銆?br>
銆銆鎵樼C++涓殑__gc鎺ュ彛鏈鑳戒綋鐜癈OM鎺ュ彛鐨勬濇兂錛屽畠鐨勫畾涔夊拰澹版槑鏄潪甯哥畝鍗曠殑錛屽畠闄や簡鍏抽敭瀛椾笉鍚屽錛屼笌涓涓猒_gc綾葷殑澹版槑鏋佷負鐩鎬技銆備緥濡備笅闈㈢殑浠g爜瀹氫箟浜嗕竴涓帴鍙MyBase錛屽叾涓寘鍚簡涓涓猣鐨勬柟娉曪細

__gc __interface Ibase {
void f();
};

銆銆闇瑕佽鏄庣殑鏄紝鎺ュ彛涓墍鏈夌殑鏂規硶榛樿鏃墮兘鏄函铏氱殑涓旈兘鏄叕鏈夌殑錛屾垜浠笉闇瑕佸湪鏂規硶涔嬪墠浣跨敤virtual鍏抽敭瀛楁垨鍦ㄦ柟娉曚箣鍚庡姞涓?#8220;= 0”銆傚叾嬈★紝鍦ㄤ竴涓猒_gc鎺ュ彛涓笉鑳藉寘鍚暟鎹垚鍛樹互鍙婇潤鎬佹垚鍛橈紝涔熶笉鑳藉寘鍚換浣曠被鐨勫0鏄庛備笅闈婦涓涓ず渚嬫潵璇存槑__gc鎺ュ彛鐨勪嬌鐢細

#using 
using namespace System;

__gc __interface Ibase1 {
int f(int);
};
__gc __interface Ibase2 {
int f(int);
};
__gc struct C: Ibase1, Ibase2 {
int f(int i) { // 鎺ュ彛鏂規硶鐨勫疄鐜?br>return 2*i-1;
};
};

int main(void){
C* c = new C;
Console::WriteLine((c -> f(1)).ToString()); // 杈撳嚭緇撴灉涓?
Console::WriteLine((__try_cast (c)->f(2)).ToString()); 
// 杈撳嚭緇撴灉涓?

Console::WriteLine((__try_cast (c)->f(3)).ToString());
// 杈撳嚭緇撴灉涓?

return 0;
}

銆銆浠g爜涓紝__try_cast鐢ㄦ潵灝嗘煇涓璞¤漿鎹㈡垚涓涓寚瀹氱被鍨嬶紝騫跺綋綾誨瀷杞崲澶辮觸鏃惰嚜鍔ㄥ鐞嗙敱姝や駭鐢熺殑寮傚父銆俆oString鐢ㄦ潵灝嗗璞℃弿榪版垚涓涓瓧絎︿覆銆?br>(4) 綆鍖栧睘鎬ф搷浣?br>
銆銆鍦╛_gc綾諱腑鍙互浣跨敤.NET鐨勫睘鎬э紝榪欎釜灞炴х畝鍖栦簡灞炴у嚱鏁扮殑璋冪敤鎿嶄綔錛岃繖涓庢爣鍑咰++涓殑灞炴т笉涓鏍楓傚湪鏍囧噯C++涓垎鍒氳繃get_鍜宲ut_鎴愬憳鍑芥暟鏉ヨ緗垨鑾峰彇鐩稿叧灞炴х殑鍊箋傜幇鍦紝鎵樼C++涓殑灞炴ф搷浣滃氨濂芥瘮鏄涓涓睘鎬у彉閲忚繘琛屾搷浣滐紝渚嬪涓嬪垪浠g爜錛?br>
#using 
using namespace System;

__gc class G {
public:
__property int get_Size() {
Console::WriteLine(S"get_灞炴?);
return nSize;
};
__property void set_Size(int i) { 
Console::WriteLine(S"set_灞炴?);
nSize = i;
};
private:
int nSize;
};

int main() {
G * pG = new G;
pG->Size = 10; // 璋冪敤set_Size
int i = pG->Size; // 璋冪敤get_Size
Console::WriteLine(i);
}

銆銆紼嬪簭緇撴灉涓猴細

銆銆銆set_灞炴?br>
銆銆銆get_灞炴?br>
銆銆銆10

銆銆闇瑕佽鏄庣殑鏄紝鎵樼C++浣跨敤__property鍏抽敭瀛楁潵瀹氫箟涓涓睘鎬х殑鎴愬憳鍑芥暟銆備粠浠g爜涓彲浠ョ湅鍑鴻緗拰鑾峰彇灞炴х殑鎴愬憳鍑芥暟鍚嶇О涓垎鍒嬌鐢ㄤ簡set_鍜実et_錛岃繖鏍風紪璇戝櫒浼氳嚜鍔ㄧ敓鎴愪竴涓吉鎴愬憳鍙橀噺Size錛岃繖涓彉閲忓悕鏄痵et_鍜実et_鎴愬憳鍑芥暟鍚庨潰鐨勫悕縐般傛敞鎰忎笉瑕佸啀鍦╣et_鎴愬憳鍑芥暟浠g爜涓嬌鐢ㄨ繖涓吉鎴愬憳鍙橀噺Size錛屽畠浼氬紩璧瘋鍑芥暟鐨勯掑綊璋冪敤銆?br>
銆銆(5) 鎵樼C++鐨勫媧?/strong>

銆銆鍦–/C++涓紝涓涓嚱鏁扮殑鍦板潃灝辨槸鍐呭瓨鍦板潃銆傝繖涓湴鍧涓嶄細甯︽湁浠諱綍鍏跺畠闄勫姞淇℃伅錛屽鍑芥暟鐨勫弬鏁頒釜鏁般佸弬鏁扮被鍨嬨佸嚱鏁扮殑榪斿洖鍊肩被鍨嬩互鍙婅繖涓嚱鏁扮殑璋冪敤瑙勮寖絳夈傛諱箣錛孋/C++鐨勫洖璋冨嚱鏁頒笉鍏峰綾誨瀷瀹夊叏鎬с傝?NET妗嗘灦鍦ㄥ洖璋冨嚱鏁扮殑鍩虹澧炲姞浜嗘彁渚涚被鍨嬪畨鍏ㄧ殑鏈哄埗錛岀О涓哄媧俱?br>
銆銆鎵樼C++鐨勫媧炬柟娉曚笉鍍廋#閭d箞澶嶆潅錛屽畠綆鍖栦簡濮旀淳緇濆ぇ閮ㄥ垎鐨勫唴閮ㄦ満鍒訛紝鍥犺屼嬌寰楀畠鐨勪嬌鐢ㄥ彉鎴愰潪甯哥畝鍗曞鏄撱備緥濡備笅闈㈢殑浠g爜錛?br>
#using 
using namespace System;

__delegate int GetDayOfWeek(); // 濮旀淳鏂規硶鐨勫0鏄?br>__gc class MyCalendar
{
public:
MyCalendar() : m_nDayOfWeek(4) {}
int MyGetDayOfWeek() {
Console::WriteLine("闈為潤鎬佹柟娉?); 
return m_nDayOfWeek; 
}
static int MyStaticGetDayOfWeek() { 
Console::WriteLine("闈欐佹柟娉?); 
return 6; 
}
private:
int m_nDayOfWeek;
};

int main(void)
{
GetDayOfWeek * pGetDayOfWeek; // 澹版槑濮旀淳綾誨瀷鍙橀噺
int nDayOfWeek;

// 灝嗙被鐨勯潤鎬佹柟娉昅yStaticGetDayOfWeek緇戝畾鎴愬媧?br>pGetDayOfWeek = new GetDayOfWeek(0, &MyCalendar::MyStaticGetDayOfWeek);
nDayOfWeek = pGetDayOfWeek->Invoke(); // 濮旀淳鐨勮皟鐢?br>Console::WriteLine(nDayOfWeek);

// 灝嗕竴涓被鐨勫疄渚嬬粦瀹氭垚濮旀淳
MyCalendar * pcal = new MyCalendar();
pGetDayOfWeek = 
static_cast(Delegate::Combine(pGetDayOfWeek,
new GetDayOfWeek(pcal, &MyCalendar::MyGetDayOfWeek)));
nDayOfWeek = pGetDayOfWeek->Invoke();
Console::WriteLine(nDayOfWeek);

// 鍒犻櫎緇戝畾濮旀淳鐨勭被瀹炰緥
pGetDayOfWeek = 
static_cast(Delegate::Remove(pGetDayOfWeek,
new GetDayOfWeek(pcal, &MyCalendar::MyGetDayOfWeek)));

return 0;
}

銆銆杈撳嚭緇撴灉鏄細

銆銆銆闈欐佹柟娉?br>銆銆
銆銆銆6

銆銆銆闈欐佹柟娉?br>
銆銆銆闈為潤鎬佹柟娉?br>
銆銆銆4

銆銆4銆佺粨閫熻

銆銆鎬諱箣錛屼嬌鐢ㄦ墭綆++鏄疌++紼嬪簭鍛樼紪鍐?NET妗嗘灦搴旂敤紼嬪簭鏈濂界殑涓縐嶉夋嫨錛屽湪鍏呭垎鐞嗚В.NET妗嗘灦鍩虹涓婏紝閬垮厤浜嗕嬌鐢ㄥ叾浠栬璦濡侰#銆乂B.NET鎵甯︽潵鐨勯澶栧紑閿銆?/div>

BeyondCN 2008-10-24 11:43 鍙戣〃璇勮
]]> 中文国产成人精品久久亚洲精品AⅤ无码精品 | 国产精品99久久精品爆乳| 国产精品久久久久久久久鸭| 99久久综合狠狠综合久久止| 亚洲国产精品人久久| 久久久久久午夜精品| 91精品国产综合久久精品| 国内精品伊人久久久久影院对白 | 国产精品99精品久久免费| 久久最新精品国产| 中文字幕精品无码久久久久久3D日动漫| 亚洲国产成人久久综合一区77| 久久久久久九九99精品| 久久精品夜色噜噜亚洲A∨| 97精品伊人久久久大香线蕉| 久久国产精品成人免费| 久久精品极品盛宴观看| 91久久香蕉国产熟女线看| 精品久久人人爽天天玩人人妻| 成人a毛片久久免费播放| 国内精品九九久久精品| 久久久精品久久久久久| 久久九九有精品国产23百花影院| 久久久国产精华液| 亚洲国产成人精品91久久久| 国产一级持黄大片99久久| 亚洲综合伊人久久综合| 欧美一级久久久久久久大| 国产精品岛国久久久久| 久久成人国产精品| 久久亚洲精品成人av无码网站| 亚洲精品高清一二区久久| 国产毛片久久久久久国产毛片| 久久精品国产亚洲精品2020 | 久久久91人妻无码精品蜜桃HD| 成人妇女免费播放久久久| 亚洲精品美女久久久久99| 狠狠色丁香久久婷婷综合_中| 久久久久无码专区亚洲av| 久久精品国产亚洲7777| 欧美亚洲国产精品久久蜜芽|