璋堣皥.net瀵硅薄鐢熷懡鍛ㄦ湡

 涓嶇敤绋嬪簭鍛樻搷蹇冪殑鍫� — 鎵樼鍫�        

銆�銆�绋嬪簭鍦ㄨ绠楁満涓婅窇鐫�锛屽氨闅惧厤浼氬崰鐢ㄥ唴瀛樿祫婧愭潵瀛樺偍鍦ㄧ▼搴忚繍琛岃繃绋嬩腑鐨勬暟鎹紝鎴戜滑鎸夌収鍐呭瓨璧勬簮鐨勫瓨鍙栨柟寮忓皢鍐呭瓨鍒掑垎涓�鍫嗗唴瀛�鍜�鏍堝唴瀛�銆�

銆�   鏍堝唴瀛橈紝閫氬父浣跨敤鐨勫満鏅槸锛�瀵瑰瓨鍙栭�熷害瑕佹眰杈冮珮涓旀暟鎹噺涓嶅ぇ銆�

銆�   鍏稿瀷鐨勬爤鍐呭瓨浣跨敤鐨勪緥瀛愬氨鏄嚱鏁版爤锛屾瘡涓�涓嚱鏁拌璋冪敤鏃堕兘浼氳鍒嗛厤涓�鍧楀唴瀛橈紝杩欏潡鍐呭瓨琚О涓烘爤鍐呭瓨锛屼互鍏堣繘鍚庡嚭鐨勬柟寮忓瓨鍙栨暟鎹紝鍦ㄥ嚱鏁版墽琛岃繃绋嬩腑涓嶆柇寰�鍑芥暟鏍堜腑鍘嬪叆锛圥USH锛夋暟鎹紙鍊肩被鍨嬫暟鎹細int銆乫loat銆佸璞$殑寮曠敤...锛夛紝鍑芥暟鎵ц瀹屽悗鍙堝皢鍑芥暟鏍堜腑鐨勬暟鎹�愪釜寮瑰嚭锛圥OP锛�,鐢变簬鏄互鎿嶄綔鏍堢殑褰㈠紡鏉ュ瓨鍙栵紝鎵�浠ヨ闂�熷害蹇��

璋堣皥.net瀵硅薄鐢熷懡鍛ㄦ湡_第1张图片

銆�銆�鍫嗗唴瀛橈紝浠庡瓧闈㈡剰鎬濅笂鐞嗚В灏卞ソ鍍忔槸浠撳簱閲岄潰鍙互瀛樹竴鍫嗙牬鐑傦紝浣犺嫢鏄渶瑕佸瓨鐐逛粈涔堜笢瑗垮氨灏界寰�閲岄潰涓�鎵旓紝浠撳簱閲屾湁鐨勬槸绌洪棿銆備簨瀹炵‘瀹炰篃鏄姝わ紝鍫嗗唴瀛樹腑鍙互瀛樻斁澶ц鏍肩殑鏁版嵁锛堟瘮濡傚璞¤祫婧愶級锛岃繖浜涙暟鎹槸涓嶉�傚悎瀛樻斁鍦ㄦ爤涓殑锛屽洜涓烘爤绌洪棿鐨勫閲忔湁闄愶紝杩欏氨鏄�鍫嗗唴瀛樼浉瀵逛簬鏍堝唴瀛樼殑濂藉锛氬閲忓ぇ銆備絾鏄畠鐨勭己鐐逛篃鏄樉鑰屾槗瑙佺殑锛岄偅灏辨槸瀛樺彇鍫嗗唴瀛樼殑鏁版嵁鐩歌緝浜庡瓨鍙栨爤鍐呭瓨鏄潪甯告參鐨�锛岃瘯鎯充竴涓嬶紝璁╀綘鍦ㄤ粨搴撻噷鐨勪竴鍫嗙牬鐑傞噷鍘绘壘浣犳兂瑕佺殑涓滆タ鏄粈涔堟劅瑙夈��

銆� 锛堟爤鍐呭瓨姣斿爢鍐呭瓨璇︾粏鍙傝��:https://blog.csdn.net/boyxiaolong/article/details/8543676锛�

 璋堣皥.net瀵硅薄鐢熷懡鍛ㄦ湡_第2张图片 

 

銆�銆�浠庡唴瀛�鍒嗛厤鏂瑰紡涓婄湅锛屽爢鍐呭瓨涓嶅悓浜庢爤鍐呭瓨锛屽嚱鏁版爤鏄湪姣忎竴涓嚱鏁拌鎵ц鐨勬椂鍊欒鑷姩鍒嗛厤骞朵笖鍑芥暟鎵ц瀹屾垚鍚庤嚜鍔ㄥ洖鏀讹紝鑰屽鏋滀綘鎯充娇鐢ㄥ爢鍐呭瓨锛屽氨寰楄嚜宸卞姩鎵嬩赴琛h冻椋熴��

銆�   鎵�浠ヤ綘浼氱湅鍒癱璇█绋嬪簭鍛樹細杩欐牱鍘讳娇鐢ㄥ爢鍐呭瓨锛�

int *p = (int*)malloc(sizeof(int)); //鍦ㄥ爢鍐呭瓨涓敵璇蜂竴鍧楀瓧鑺傛暟涓篿nt瀛楄妭鏁扮殑鍫嗗唴瀛橈紝骞惰繑鍥炴寚鍚戣鍐呭瓨鍖哄煙鐨勬寚閽�
*p = 10; 
free(p); //閲婃斁鍫嗗唴瀛樿祫婧�

 銆�銆�浣犺繕浼氱湅瑙乧++绋嬪簭鍛樿繖鏍峰啓锛�

Car* bmw = new Car(); //鍒涘缓涓�涓狢ar绫诲璞★紝鍦ㄥ爢鍐呭瓨涓瓨鏀惧璞℃暟鎹紝骞惰繑鍥炴寚鍚戝璞¤祫婧愮殑鎸囬拡
delete bmw; //閲婃斁鍫嗗唴瀛樿祫婧�

銆�銆�褰撶劧锛屾病鏈夋帴瑙﹁繃c/c++鐨勫皬浼欎即涔熶笉鐢ㄦ儕鎱岋紝涓婇潰鍙笉杩囨槸鎯宠浣犵煡閬撳湪c/c++璇█涓紝绋嬪簭鍛樿鏄兂浣跨敤鍫嗗唴瀛橈紝閭e氨蹇呴』鏄惧紡鍦扮紪鍐欏垎閰嶅拰閲婃斁鍫嗗唴瀛樿祫婧愮殑浠g爜銆�

銆�   鏈変汉闂�锛�浣跨敤瀹屽爢鍐呭瓨璧勬簮鍚庢病鏈夋墜鍔ㄩ噴鏀惧畠浼氭湁浠�涔堝悗鏋滃悧锛�

銆�   绛旀鏄�锛�鐢变簬鍫嗗唴瀛樿祫婧愪娇鐢ㄨ�呮湭鍙婃椂閲婃斁鍐呭瓨浼氬鑷村唴瀛樻棤娉曞啀娆′娇鐢紝浠庤�岄�犳垚鍐呭瓨璧勬簮鐨勬硠婕忥紙娴垂锛夈��

 

 銆�  灏卞湪杩欎釜鏃跺�欙紝c#绋嬪簭鍛樼瑧浜嗭紝鍙浠栫殑鎵嬫寚闈炲父杞荤泩浼橀泤鍦板湪灞忓箷涓婃暡鍑轰簡涓嬮潰杩欒浠g爜锛�

銆�銆�Car bmw = new Car();

銆�銆�涓�鏃佸洿瑙傜殑c绋嬪簭鍛樺拰c++绋嬪簭鍛樻儕鍛嗕簡锛屼粬浠笉鐭ラ亾鑷繁鍦ㄦ暡浠g爜鐨勬椂鍊欐湁娌℃湁鍍忚繖鏍疯交鏉捐繃銆俢++绋嬪簭鍛樼敤鎵嬫姎鎽哥潃浠栭偅閿冨厜鐡︿寒鐨勯澶达紝绐佺劧鐪肩潧閲岄棯鐫�鍏夛紝鍠婇亾锛�“浣犺繕娌℃湁閲婃斁鍫嗗唴瀛樼殑璧勬簮鍛紝浣犺繖鏍锋槸寰堝嵄闄╃殑锛屼細鍐呭瓨娉勬紡鐨勶紝蹇紝鎶婇噴鏀惧爢鍐呭瓨鐨勪唬鐮佸啓涓婏紒”

銆�銆�c#绋嬪簭鍛樹技涔庡苟涓嶄负鎵�鍔紝鑸掕垝鏈嶆湇鍦伴潬鍦ㄦ瀛愪笂锛岀敤浣欏厜鐬熶簡c++绋嬪簭鍛樹竴鐪硷紝璇达細“涓嶇敤鎱岋紝涓嶇敤鎱岋紝杩欎釜瀵硅薄鍦ㄦ墭绠″爢涓婃斁鐨勫ソ濂界殑鍛紝涓嶇敤鎴戞搷蹇�”锛屼簬鏄紝c#绋嬪簭鍛樹究濞撳〒閬撴潵锛堝懠鍛煎ぇ鐫★級...

 

銆�銆�鍦�.NET鐨勪笘鐣岋紝浣跨敤new鍏抽敭瀛楀垱寤轰竴涓璞★紝棣栧厛瀵硅薄璧勬簮琚垎閰嶅湪鎵樼鍫嗕腑锛岀劧鍚巒ew浼氳繑鍥炰竴涓寚鍚戝爢涓婂璞$殑寮曠敤锛岃�屼笉鏄湡姝g殑瀵硅薄鏈韩銆傚鏋滃湪鏂规硶浣滅敤鍩熶腑灏嗗紩鐢ㄥ彉閲忓0鏄庝负鏈湴鍙橀噺锛岃繖涓紩鐢ㄥ彉閲忎繚瀛樺湪鏍堝唴锛屼互渚涘簲鐢ㄧ▼搴忎互鍚庝娇鐢ㄣ��

銆�璋堣皥.net瀵硅薄鐢熷懡鍛ㄦ湡_第3张图片

 銆�銆�鎵樼鍫嗭紝椤惧悕鎬濅箟锛屽氨鏄墭缁欏埆浜虹鐨勫爢锛�閭d箞鏄皝鍦ㄧ鐞嗙潃杩欎釜鍫嗕笂鐨勫璞¤祫婧愬憿锛�

銆�銆�绛旀鏄�锛�CLR(Common Lanauage Runtime)锛屽璞$殑瀹炰緥鍖栫粨鏉熶互鍚庯紝GC(鍨冨溇鍥炴敹鍣�)灏嗕細鍦ㄥ璞′笉鍐嶉渶瑕佹椂灏嗗叾閿�姣併��

銆�銆�涔熷氨鏄锛岄�氳繃鍏佽鍨冨溇鏀堕泦鍣ㄨ礋璐i攢姣佸璞★紝鍐呭瓨绠$悊鐨勯夯鐑﹀氨閮戒氦缁機LR浜嗭紝涓囦簨澶у悏銆�

銆�璋堣皥.net瀵硅薄鐢熷懡鍛ㄦ湡_第4张图片

 璋堣皥.net瀵硅薄鐢熷懡鍛ㄦ湡_第5张图片

 

 

 

銆�銆�鐪嬩技闂濂藉儚閮藉凡姘磋惤鐭冲嚭锛屾棤闈炲氨鏄皢鍫嗗唴瀛樿祫婧愬洖鏀朵氦缁欎簡CLR鍘绘壙鎷呫�傞毦閬撲綘灏变笉鎯崇煡閬撶殑鏇村涓�鐐癸紵姣斿鎺ョ潃鑰屾潵鐨勯棶棰橈細

銆�銆�1銆�鍨冨溇鍥炴敹鍣ㄥ浣曞垽鏂竴涓璞′粈涔堟椂鍊欎笉鍐嶉渶瑕侊紵

銆�銆�2銆�鍨冨溇鍥炴敹鍣ㄥ張鍦ㄤ粈涔堟椂鍊欎細鎵ц鍨冨溇娓呯悊鐨勬搷浣滐紵

銆�銆�鍒�ワ紝甯︾潃闂鎱㈡參寰�涓嬬湅銆�

CIL鐨刵ew鎸囦护 — 鍨冨溇鍥炴敹鐨勮Е鍙戣��

銆�銆�c#涓殑new鍏抽敭瀛楁渶缁堜細琚紪璇戝櫒缈昏瘧鎴怌IL鐨刵ewobj鎸囦护锛岃鎴戜滑浠旂粏鏌ョ湅涓�涓婥IL newobj鎸囦护鐨勪綔鐢ㄣ��

璋堣皥.net瀵硅薄鐢熷懡鍛ㄦ湡_第6张图片

銆�銆�棣栧厛锛岄渶瑕佹槑鐧芥墭绠″爢涓嶄粎浠呮槸涓�涓彲鐢盋LR璁块棶鐨勯殢鏈哄唴瀛樺潡銆�.NET鍨冨溇鍥炴敹鍣ㄦ槸鍫嗙殑“娓呮磥宸�”锛屽嚭浜庝紭鍖栫殑鐩殑瀹冧細鍘嬬缉绌洪棽鐨勫唴瀛樺潡锛堝綋闇�瑕佹椂锛夈�備负浜嗚緟鍔╁帇缂╋紝鎵樼鍫嗕細缁存姢涓�涓寚閽�(閫氬父琚彨鍋氫笅涓�涓璞℃寚閽堟垨鑰呮槸鏂板璞℃寚閽堬級锛岃繖涓寚閽堢敤鏉ユ爣璇嗕笅涓�涓璞″湪鍫嗕腑鍒嗛厤鐨勫湴鍧�銆�

銆�銆�姝ゅ锛宯ewobj鎸囦护閫氱煡CLR鏉ユ墽琛屼笅鍒楃殑鏍稿績浠诲姟锛�

銆�銆�(1)璁$畻瑕佸垎閰嶇殑瀵硅薄鎵�闇�鐨勫叏閮ㄥ唴瀛橈紙鍖呮嫭杩欎釜绫诲瀷鐨勬暟鎹垚鍛樺拰绫诲瀷鐨勫熀绫绘墍闇�鐨勫唴瀛橈級銆�

銆�銆�(2)妫�鏌ユ墭绠″爢鏉ョ‘淇濇湁瓒冲鐨勭┖闂存潵鏀剧疆鎵�鐢宠鐨勫璞°�傚鏋滄湁瓒冲鐨勭┖闂达紝浼氳皟鐢ㄨ繖涓被鍨嬬殑鏋勯�犲嚱鏁帮紝鏋勯�犲嚱鏁颁細杩斿洖涓�涓寚鍚戝唴瀛樹腑杩欎釜鏂板璞$殑寮曠敤锛岃繖涓柊瀵硅薄鐨勫湴鍧�鍒氬ソ灏辨槸涓嬩竴涓璞℃寚閽堜笂涓�娆℃墍鎸囧悜鐨勪綅缃��

銆�銆�(3)鏈�鍚庯紝鍦ㄦ妸寮曠敤杩斿洖缁欒皟鐢ㄨ�呬箣鍓嶏紝璁╀笅涓�涓璞℃寚閽堟寚鍚戞墭绠″爢涓笅涓�涓彲鐢ㄧ殑浣嶇疆銆�

銆�銆�涓嬮潰鐨勫浘瑙i噴浜嗗湪鎵樼鍫嗕笂鍒嗛厤瀵硅薄鐨勭粏鑺傘��

       璋堣皥.net瀵硅薄鐢熷懡鍛ㄦ湡_第7张图片

銆�銆�鍦╟#涓垎閰嶅璞℃槸涓�涓緢棰戠箒鐨勬搷浣滐紝鐓ц繖鏍蜂笅鍘绘墭绠″爢涓婄殑绌洪棿杩熸棭浼氳鎸ラ湇瀹岋紝鎵�浠ワ紝閲嶇偣鏉ヤ簡锛�濡傛灉CLR 鍙戠幇鎵樼鍫嗘病鏈夎冻澶熺┖闂村垎閰嶈姹傜殑绫诲瀷鏃讹紝瀹冧細鎵ц涓�娆″瀮鍦惧洖鏀舵潵閲婃斁鍐呭瓨銆�

銆�銆�褰撴墽琛屽瀮鍦惧洖鏀舵椂锛屽瀮鍦炬敹闆嗗櫒涓存椂鎸傝捣褰撳墠杩涚▼涓殑鎵�鏈夌殑娲诲姩绾跨▼鏉ヤ繚璇佸湪鍥炴敹杩囩▼涓簲鐢ㄧ▼搴忎笉浼氳闂埌鍫嗐�傦紙涓�涓嚎绋嬫槸涓�涓鍦ㄦ墽琛岀殑绋嬪簭涓殑鎵ц璺緞锛夈�備竴鏃﹀瀮鍦惧洖鏀跺畬鎴愶紝鎸傝捣鐨勭嚎绋嬪張鍙互缁х画鎵ц浜嗐�傝繕濂斤紝.NET 鍨冨溇鍥炴敹鍣ㄦ槸楂樺害浼樺寲杩囩殑锛屾墍浠ョ敤鎴峰緢灏戣兘瀵熻鍒板簲鐢ㄧ▼搴忎腑鐨勭煭鏆備腑鏂��

銆�銆�閫氳繃瀵笴IL鐨刵ew鎸囦护浣滅敤鐨勮В璇伙紝鎴戜滑鐭ラ亾浜�:濡傛灉鎵樼鍫嗘病鏈夎冻澶熺殑绌洪棿鍒嗛厤涓�涓姹傜殑瀵硅薄锛屽垯浼氭墽琛屼竴娆″瀮鍦惧洖鏀�銆�

 

     锛堣鍒拌繖閲宑#绋嬪簭鍛樺仠浜嗕笅鏉ワ紝鍠濅簡鍙d繚娓╂澂閲岀殑鏋告潪绾㈡灒澶цˉ鑼娥煃碉紝娓呬簡娓呭棑瀛愶紝缁х画寮�濮嬭В鎯�...)

       

搴旂敤绋嬪簭鏍圭殑浣滅敤 鍖哄垎涓嶅彲鍒拌揪鐨勫璞�

銆�銆�鐜板湪璁╂垜浠潵璁ㄨ涓�涓嬪瀮鍦惧洖鏀跺櫒鎬庢牱纭畾浠�涔堟椂鍊�“涓嶅啀闇�瑕�”涓�涓璞°�備负浜嗙悊瑙g粏鑺傦紝浣犻渶瑕佺煡閬撳簲鐢ㄧ▼搴忔牴鐨勬蹇点��

銆�銆�绠�鍗曟潵璇达紝涓�涓牴鏄竴涓紩鐢紝杩欎釜寮曠敤鎸囧悜鍫嗕笂闈㈢殑涓�涓璞$殑銆備弗鏍兼潵璇达紝涓�涓牴鍙互鏈変互涓嬪嚑绉嶆儏鍐碉細

銆�   (1) 鎸囧悜鍏ㄥ眬瀵硅薄鐨勫紩鐢紙灏界C#涓嶆敮鎸侊紝浣咰IL浠g爜鍏佽鍒嗛厤鍏ㄥ眬瀵硅薄锛�

銆�銆�(2) 鎸囧悜浠讳綍闈欐�佸璞�

銆�銆�(3) 鎸囧悜涓�涓簲鐢ㄧ▼搴忎唬鐮佷腑鐨勫眬閮ㄥ璞�

銆�銆�(4) 鎸囧悜浼犲叆鍒颁竴涓嚱鏁颁腑鐨勫璞″弬鏁�

銆�銆�(5) 鎸囧悜绛夊緟琚粓缁�(finalized)鐨勫璞�

銆�銆�(6) 浠讳綍涓�涓寚鍚戝璞$殑CPU瀵勫瓨鍣�

銆�銆�鍦ㄤ竴娆″瀮鍦惧洖鏀剁殑杩囩▼涓紝杩愯鐜浼氭鏌ユ墭绠″爢涓婇潰鐨勫璞℃槸鍚︿粛鐒舵槸浠庡簲鐢ㄧ▼搴忔牴鍙埌杈剧殑銆備负浜嗘鏌ュ彲杈撅紝CLR浼氬缓绔嬩竴涓唬琛ㄥ爢涓婃瘡涓彲杈惧璞$殑鍥俱�傚璞″浘鐢ㄦ潵璁板綍鎵�鏈夊彲杈剧殑瀵硅薄銆傚悓鏃讹紝娉ㄦ剰鍨冨溇鍥炴敹鍣ㄧ粷涓嶄細鍦ㄥ浘涓婃爣璁颁竴涓璞′袱娆★紝鍥犳閬垮厤浜嗙儲浜虹殑寰幆寮曠敤銆�

銆�銆�鍋囪鎵樼鍫嗕笂鏈夊悕瀛椾负A,B,C,D,E锛孎鍜孏鐨勫璞¢泦鍚堛�傚湪涓�娆″瀮鍦惧洖鏀惰繃绋嬩腑锛屼細妫�鏌ヨ繖浜涘璞★紙鍚屾椂鍖呮嫭杩欎簺瀵硅薄鍙兘鍖呭惈鐨勫唴閮ㄥ璞″紩鐢級鏄惁鏄牴鍙揪鐨勩�備竴鏃﹀浘琚缓绔嬭捣鏉ワ紝涓嶅彲杈剧殑瀵硅薄锛堝湪姝ゆ槸瀵硅薄C鍜孎锛夎鏍囪涓哄瀮鍦俱��

銆�銆�涓嬪浘鏄笂杩板満鏅殑涓�涓彲鑳界殑瀵硅薄鍥撅紙浣犲彲浠ユ妸绠ご璇讳綔渚濊禆鎴栬�呴渶瑕侊紝渚嬪"E渚濊禆浜嶨锛岄棿鎺ヤ緷璧栦簬B锛�“A涓嶄緷璧栦换浣曞璞�”绛夛級銆�

璋堣皥.net瀵硅薄鐢熷懡鍛ㄦ湡_第8张图片

锛堝垱寤虹殑瀵硅薄鍥炬槸鐢ㄦ潵鍐冲畾鍝簺瀵硅薄鏄簲鐢ㄧ▼搴忔牴鍙揪鐨勩�傦級

銆�銆�涓�鏃︿竴涓璞″凡缁忚鏍囪涓虹粓缁擄紙姝や緥瀛愪腑鏄疌鍜孎--鍦ㄥ浘涓病鏈変粬淇╋級锛屽畠鍦ㄥ唴瀛樹腑灏辫娓呯悊鎺変簡銆傚湪姝ゆ椂锛屽爢涓婄殑鍓╀綑鍐呭瓨绌洪棿琚帇缂╋紝杩欎細瀵艰嚧CLR淇敼娲诲姩鐨勫簲鐢ㄧ▼搴忔牴闆嗗悎锛堝拰瀵瑰簲鐨勬寚閽堬級鏉ユ寚鍚戞纭殑鍐呭瓨浣嶇疆锛堣繖涓搷浣滄槸鑷姩閫忔槑鐨勶級銆傛渶鍚庯紝璋冩暣涓嬩竴涓璞℃寚閽堟潵鎸囧悜涓嬩竴涓彲鐢ㄧ殑鍐呭瓨浣嶇疆銆�

銆�銆�涓嬪浘闃愭槑浜嗘竻闄ゅ拰鍘嬬缉鍫嗙殑杩囩▼銆�

璋堣皥.net瀵硅薄鐢熷懡鍛ㄦ湡_第9张图片

銆�銆�鍒拌繖閲岋紝閫氳繃瀵瑰簲鐢ㄧ▼搴忔牴鐨勪綔鐢ㄧ殑鐞嗚В锛屾垜浠煡閬撲簡濡備綍鐭ラ亾涓�涓璞℃槸“涓嶅啀闇�瑕�”鐨勩��閫氫織鐐规潵璇村氨鏄紝杩欎釜瀵硅薄鍦ㄥ簲鐢ㄧ▼搴忎腑宸茬粡鏃犻渶琚闂簡锛屾垚涓轰簡涓�搴�“瀛ゅ矝”锛岃嚜鐒朵篃灏变笉鍐嶉渶瑕佸畠浜嗐��

 

銆�銆�锛�涓轰簡璁ヽ++绋嬪簭鍛樿兘鏇村姞鐞嗚В. net鍨冨溇鍥炴敹鐨勫ゥ濡欙紝c#绋嬪簭鍛樼户缁粩婊斾笉缁�…锛�

 

鐞嗚В瀵硅薄鐨勪唬 — 鍨冨溇鍥炴敹杩囩▼鐨勪紭鍖�

銆�銆�鍦ㄥ皾璇曟壘鍒颁笉鍙揪鐨勫璞℃椂锛孋LR骞朵笉鏄鏌ユ墭绠″爢涓婄殑姣忎釜瀵硅薄銆傚緢鏄庢樉锛岃繖鏍峰仛浼氭秷鑰楀ぇ閲忔椂闂达紝灏ゅ叾鍦ㄥぇ鍨嬶紙渚嬪鐜板疄涓級绋嬪簭涓��

銆�銆�涓轰簡甯姪浼樺寲杩欎釜杩囩▼锛屽爢涓婄殑姣忎釜瀵硅薄琚垎閰嶅埌涓�涓壒娈婄殑"浠�”銆備唬杩欎釜姒傚康鑳屽悗鐨勬兂娉曞緢绠�鍗曪細瀵硅薄鍦ㄥ爢涓婂瓨娲荤殑鏃堕棿瓒婇暱锛屾帴涓嬫潵瀹冪户缁瓨鍦ㄧ殑鍙兘鎬т篃灏辫秺澶э紝鍗宠緝鏃х殑瀵硅薄鐢熷瓨鏈熼暱锛岃緝鏂扮殑瀵硅薄鐢熷瓨鏈熺煭銆備緥濡傦紝瀹炵幇Main()鐨勫璞′竴鐩村湪鍐呭瓨涓紝鐩村埌绋嬪簭缁撴潫銆傜浉鍙嶏紝鏈�杩戞墠琚斁鍒板爢涓殑瀵硅薄锛堜緥濡傚湪涓�涓嚱鏁拌寖鍥撮噷鍒嗛厤鐨勫璞★級寰堝彲鑳藉緢蹇氨涓嶅彲杈俱��

銆�銆�鍦ㄥ爢涓婄殑姣忎釜瀵硅薄灞炰簬浠ヤ笅鐨勬煇涓�涓唬锛�

銆�   Generation 0锛� 鏍囪瘑涓�涓渶杩戝垎閰嶇殑杩樻病鏈夎鏍囪涓哄洖鏀剁殑瀵硅薄

銆�銆�Generation 1: 鏍囪瘑涓�涓粡鍘嗕簡涓�娆″瀮鍦惧洖鏀惰�屽瓨娲讳笅鏉ョ殑瀵硅薄锛堜緥濡傦紝浠栬鏍囪涓哄洖鏀讹紝浣嗙敱浜庡爢绌洪棿澶熺敤鑰屾病鏈夎娓呴櫎鎺夛級

銆�銆�Generation 2:鏍囪瘑涓�涓粡鍘嗕簡涓嶆涓�杞瀮鍦惧洖鏀惰�屽瓨娲讳笅鏉ョ殑瀵硅薄銆�

 

銆�銆�鍨冨溇鍥炴敹鍣ㄩ鍏堜細妫�鏌eneration 0鐨勬墍鏈夊璞°�傚鏋滄爣璁板苟娓呯悊杩欎簺瀵硅薄锛堣瘧鑰呮敞锛氬洜涓烘柊瀵硅薄鐨勭敓瀛樻湡寰�寰�杈冪煭锛屽苟涓旀湡鏈涘湪鎵ц鍥炴敹鏃讹紝搴旂敤绋嬪簭涓嶅啀浣跨敤绗� 0 绾ф墭绠″爢涓殑璁稿瀵硅薄锛夊悗浜х敓浜嗚冻澶熶娇鐢ㄧ殑鍐呭瓨绌洪棿锛屼换浣曞瓨娲讳笅鏉ョ殑瀵硅薄灏辫鎻愬崌鍒癎eneration 1銆備负浜嗙悊瑙d竴涓璞$殑浠e浣曞奖鍝嶅洖鏀剁殑杩囩▼锛屽彲浠ユ煡鐪嬩笅鍥俱�備笅鍥捐В閲婁簡generation 0涓竴娆″瀮鍦惧洖鏀跺悗锛屽瓨娲荤殑瀵硅薄琚彁鍗囩殑杩囩▼銆傘��銆�

璋堣皥.net瀵硅薄鐢熷懡鍛ㄦ湡_第10张图片

锛坓eneration 0 涓殑瀛樻椿瀵硅薄琚彁鍗囧埌generation 1锛�

銆�銆�濡傛灉鎵�鏈夌殑generation 0瀵硅薄閮借妫�鏌ヤ簡锛屼絾鏄骇鐢熺殑鍐呭瓨绌洪棿浠嶇劧涓嶅鐢紝灏辨鏌ヤ竴閬峠eneration 1涓殑鎵�鏈夊璞$殑鍙揪鎬у苟鍥炴敹銆傚瓨娲讳笅鏉ョ殑generation 1瀵硅薄琚彁鍗囧埌generation 2銆傚鏋滃瀮鍦惧洖鏀跺櫒浠嶇劧闇�瑕侀澶栫殑鍐呭瓨锛実eneration 2鐨勫璞″氨缁忓巻妫�鏌ュ苟琚洖鏀躲�傛鏃讹紝濡傛灉涓�涓猤eneration 2鐨勫璞″瓨娲讳笅鏉ワ紝瀹冧粛鐒舵槸涓�涓猤eneration 2鐨勫璞°��

銆�銆�鍏跺疄閫氳繃瀵硅薄鐨勪唬鐨勮璁℃槸鎯宠揪鍒拌繖涔堜竴涓晥鏋�:鏂板璞★紙姣斿灞�閮ㄥ彉閲忥級浼氳寰堝揩鍥炴敹锛岃�岃�佷竴浜涚殑瀵硅薄锛堝涓�涓簲鐢ㄧ▼搴忓璞★級涓嶄細琚粡甯搁獨鎵�銆�

銆�銆�璇村埌搴曪紝瀵硅薄浠g殑璁捐灏辨槸涓轰簡浼樺寲鍨冨溇鍥炴敹鐨勮繃绋嬨�� 銆�銆�

 

銆�銆�“鎴戣繕鏈夋渶鍚庝竴涓棶棰�”锛宑++绋嬪簭鍛樻寜鑰愪笉浣忓績閲屼竴鐩寸殑鐤戞儜锛岃鍒�:“浣犺浜嗚繖涔堝閮芥槸鍐嶈鎵樼璧勬簮锛岄毦閬�.net涓氨娌℃湁闈炴墭绠¤祫婧愬悧锛�. net鍙堟槸鎬庝箞瀵归潪鎵樼璧勬簮杩涜璧勬簮閲婃斁鐨勫憿锛�”銆�

銆�銆�"杩欎釜闂闂殑濂斤紒"锛宑#绋嬪簭鍛樺ぇ绗戯紝浜庢槸鎺ョ潃鍙堝紑濮嬭В鎯戯紙鍚笲锛�…

 

鏋勫缓鍙粓缁撳璞� — 闈炴墭绠¤祫婧愬鐞嗙涓�寮�

銆�銆�浠ヤ竴鍚峜#寮�鍙戣�呯殑鐩磋鍛婅瘔浣狅紝澶у鏁扮殑c#绫婚兘涓嶉渶瑕佹樉寮忕殑娓呯悊閫昏緫銆傚師鍥犲緢绠�鍗�:濡傛灉绫诲瀷浣跨敤浜嗗叾浠栨墭绠″璞★紝涓�鍒囬兘鏈�缁堜細琚瀮鍦惧洖鏀躲��

銆�銆�闂細閭e湪浠�涔堟椂鍊欓渶瑕佹樉寮忓湴娓呯悊鍛�锛�

銆�銆�绛旀鏄�:鍦ㄤ綘浣跨敤闈炴墭绠¤祫婧愭椂锛堜緥濡傚師濮嬬殑鎿嶄綔绯荤粺鏂囦欢鍙ユ焺銆佸師濮嬬殑闈炴墭绠℃暟鎹繛鎺ユ垨鍏朵粬闈炴墭绠¤祫婧�)锛屾墠鍙兘闇�瑕佽璁′竴涓湪鐢ㄥ畬鍚庢竻鐞嗚嚜韬瀮鍦剧殑绫�銆�

銆�銆�姣斿璇翠笅闈㈣繖涓被:

   //鏁版嵁搴撲笂涓嬫枃绫�
   public class SqlDbContext
   {
       //...(鍏朵粬琚紩鐢ㄧ殑瀵硅薄瀹炰緥)

       //绫讳腑鍖呭惈鐨勯潪鎵樼璧勬簮锛堥渶瑕佽皟鐢� Dispose()鍑芥暟杩涜璧勬簮鐨勯噴鏀撅級
       SqlConnection sqlConnection = new SqlConnection("...");  
            
   }    

銆�銆�鐜板湪闂鏉ヤ簡锛屾垜浠鍦ㄩ�傚綋鐨勬椂鏈鸿皟鐢ㄦ暟鎹簱杩炴帴绫诲璞¢噴鏀捐祫婧愮殑鏂规硶(SqlConnection绫诲璞′娇鐢ㄥ畬鍚庨渶瑕佽皟鐢―ispose()鏂规硶閲婃斁璧勬簮)銆�杩欎釜閫傚綋鐨勬椂鏈哄綋鐒跺氨鏄璞″湪琚獵LR杩涜鍨冨溇鍥炴敹鐨勮繃绋嬩腑锛屾墍浠ラ棶棰樺張鏉ュ埌浜嗭紝鏈夋病鏈変竴涓柟娉曟槸鍦ㄨ繖涓椂鏈鸿璋冪敤锛岃�屼笖鏄彲浠ヨ鎵╁睍鐨勫憿锛�

銆�銆�鏄殑锛屾垜浠彲浠ュ埄鐢�. NET鐨勫熀绫籗ystem.Object涓畾涔夌殑鍚嶄负Finalize()鐨勮櫄鏂规硶锛屼篃鍙綔缁堢粨鍣ㄦ柟娉曪紝瀹冩槸杩欐牱鐨�:

銆�銆�璋堣皥.net瀵硅薄鐢熷懡鍛ㄦ湡_第11张图片

 

 

 銆�銆�鐪嬪埌杩欏綋鐒朵細寰堝鎬紝涓嶆槸璇存湁Finalize()鏂规硶锛屽湪鍝紝閫楁垜锛熻帿鎯婅锛屽叾瀹炶繖閲岀殑 ~Object() 灏辨槸Finalize()锛屽彧鏄竴涓娉曠硸缃簡銆�

 

銆�銆�Finalize()鐨勮皟鐢ㄥ皢锛堟渶缁堬級鍙戠敓鍦ㄤ竴娆�"鑷劧鐨�"鍨冨溇鍥炴敹鎴栫敤绋嬪簭閫氳繃GC.Collect()寮哄埗鍥炴敹鐨勮繃绋嬩腑锛屾墍浠ヨ繖鏍风湅鏉ワ紝缁堢粨鍣ㄦ柟娉曞氨鏄绫诲璞¢噴鏀惧唴閮ㄩ潪鎵樼璧勬簮鐨勫湴鏂广�俷ice,鐜板湪鎴戜滑鍙互鍍忚繖鏍锋潵缂栧啓娓呯悊闈炴墭绠¤祫婧愮殑浠g爜:

        //鏁版嵁搴撲笂涓嬫枃绫�
        public class SqlDbContext
        {
            //...(鍏朵粬琚紩鐢ㄧ殑瀵硅薄瀹炰緥)

            //绫讳腑鍖呭惈鐨勯潪鎵樼璧勬簮锛堥渶瑕佽皟鐢� Dispose()鍑芥暟杩涜璧勬簮鐨勯噴鏀撅級
            SqlConnection sqlConnection = new SqlConnection("...");  

            ~SqlDbContext()
            {
                //杩欓噷娓呴櫎闈炴墭绠¤祫婧�
                this.sqlConnection.Dispose();
            }
            
        }    

銆�銆�杩欐牱琚瀯寤虹殑瀵硅薄琚彨鍋�鍙粓缁撳璞�銆�

銆�銆�鏈夊叧浜庣粓缁撹繃绋嬬殑缁嗚妭锛屽湪銆奀#涓�.NET4楂樼骇绋嬪簭璁捐锛堢5鐗堬級銆嬩功涓槸杩欐牱鎻忚堪鐨勶細

銆�銆�璋堣皥.net瀵硅薄鐢熷懡鍛ㄦ湡_第12张图片

 

 

 銆�銆�浠庝互涓婄殑鍐呭鎴戜滑寰楃煡锛�閫氳繃Finalize()鏉ユ竻闄ら潪鎵樼璧勬簮鐨勬椂鏈哄彧鑳芥槸鍦�.NET瀵硅薄琚瀮鍦惧洖鏀剁殑杩囩▼涓紝鑰屼笖缁堢粨杩囩▼鏄竴涓秷鑰椾笉灏忕殑鍔ㄤ綔銆�

銆�銆�闂鍙堟潵浜�锛�寰堝闈炴墭绠¤祫婧愰兘闈炲父瀹濊吹锛堝鏁版嵁搴撳拰鏂囦欢鍙ユ焺锛夛紝鎵�浠ヨ繖浜涜祫婧愬簲璇ュ湪浣跨敤瀹屽悗灏藉揩鍦拌娓呴櫎锛岃�屼笉鑳戒緷闈犲瀮鍦惧洖鏀剁殑鍙戠敓锛岄偅涔堣繖浜涜祫婧愬簲璇ヤ互鎬庢牱鐨勫舰寮忚鏄剧ず鍦伴噴鏀惧憿锛�

 

銆�    璋堣皥.net瀵硅薄鐢熷懡鍛ㄦ湡_第13张图片

鏋勫缓鍙缃璞� — 闈炴墭绠¤祫婧愬鐞嗙浜屽紡

      闄や簡閲嶅啓 Finalize() 涔嬪锛岀被杩樺彲浠ュ疄鐜� IDisposable 鎺ュ彛锛屽畠瀹氫箟浜嗕竴涓悕涓� Dispose() 鐨勬柟娉曪細

    public interface IDisposable
    {
        void Dispose();
    }

 

銆�銆�瀹冪殑浣跨敤鏂规硶灏辨槸锛氬湪绫荤殑Dispose()鏂规硶涓紪鍐欓潪鎵樼璧勬簮鐨勯噴鏀剧殑浠g爜锛岀▼搴忓憳鍙互鍦ㄨ繖涓璞′笉鍐嶉渶瑕佺殑鏃跺�欐墜鍔ㄨ皟鐢ㄥ璞$殑Dispose()鏂规硶鏉ヨ揪鍒板強鏃堕噴鏀鹃潪鎵樼璧勬簮鐨勭洰鐨勩��

銆�   浜庢槸浣犲彲浠ュ儚杩欐牱鏉ョ紪鍐欑被锛�

        //鏁版嵁搴撲笂涓嬫枃绫�
        public class SqlDbContext:IDisposable
        {
            //...(鍏朵粬琚紩鐢ㄧ殑瀵硅薄瀹炰緥)

            //绫讳腑鍖呭惈鐨勯潪鎵樼璧勬簮锛堥渶瑕佽皟鐢� Dispose()鍑芥暟杩涜璧勬簮鐨勯噴鏀撅級
            SqlConnection sqlConnection = new SqlConnection("...");  

            public void Dispose()
            {
                //杩欓噷娓呴櫎闈炴墭绠¤祫婧�
                this.sqlConnection.Dispose();
            }
        }        

銆�   閲囩敤杩欑鏂瑰紡鏉ラ噴鏀鹃潪鎵樼璧勬簮鐨勭被琚О浣滀负鍙缃璞�銆�

銆�   鍦ㄨ繖閲岃繕瑕佽ˉ鍏呬竴鐐癸紝C#鎻愪緵浜嗕竴涓娉曠硸鏉ョ畝鍖栬皟鐢―ispose()鎿嶄綔锛屽涓嬶細

   SqlDbContext context = new SqlDbContext();

   try
   {
        //鍦ㄦ浣滅敤鍩熷唴浣跨敤SqlDbContext绫诲璞ontext
   }
   finally
   {
        //纭繚浣跨敤瀹屽悗璋冪敤Dispose()鏂规硶
        context.Dispose();
   }    

銆�銆� 涓婇潰杩欐浠g爜绛夊悓浜庝笅闈㈣繖娈典唬鐮侊細

銆�銆�using (SqlDbContext context = new SqlDbContext())
銆�銆�{
        //鍦ㄦ浣滅敤鍩熷唴浣跨敤SqlDbContext绫诲璞ontext
銆�銆�}

銆�銆�銆�

銆�銆�c++绋嬪簭鍛樿锛�“浣犺繖杩樹笉鏄鑷繁鎵嬪姩璋冪敤锛屽鏋滄垜蹇樿璋冪敤 Dispose() 閭e矀涓嶆槸涓�鍒囬兘鐜╁畬锛�”

 銆�   c#绋嬪簭鍛樺喎绗戜竴澹帮紝“闈炰篃锛岄潪涔燂紝鎴戞潵浼犳巿浣犳渶鍚庝竴鎷涘惂锛�”

闈炴墭绠¤祫婧愭渶寮烘ā寮� — 鍙屽墤鍚堢挧

銆� 浜洪潪鍦h搐锛屽鑳芥棤杩囥�傜▼搴忓憳涔熶細鏈夊け鎵嬬殑鏃跺�欙紝姣斿锛屽繕璁拌皟鐢� Dispose() 鏂规硶...

銆�銆�杩欎釜鏃跺�欏氨蹇呴』璁捐涓�涓竾鏃犱竴澶辩殑鏂规硶锛岃揪鍒颁竴涓洰鐨勶細灏辨槸涓嶇鏈夋病鏈夋墜鍔ㄨ皟鐢―ispose(),闈炴墭绠¤祫婧愭渶缁堥兘搴旇琚Ε濡ュ湴閲婃斁鎺夈�備负浜嗚В鍐宠繖涓棶棰橈紝鎴戜滑鍙互濡備笅鍘诲畾涔変竴涓彲澶勭疆瀵硅薄绫伙細

        //鏁版嵁搴撲笂涓嬫枃绫�
        public class SqlDbContext:IDisposable
        {
            //...(鍏朵粬琚紩鐢ㄧ殑瀵硅薄瀹炰緥)

            //绫讳腑鍖呭惈鐨勯潪鎵樼璧勬簮锛堥渶瑕佽皟鐢� Dispose()鍑芥暟杩涜璧勬簮鐨勯噴鏀撅級
            SqlConnection sqlConnection = new SqlConnection("...");  

            ~SqlDbContext()
            {
                //杩欓噷娓呴櫎闈炴墭绠¤祫婧�
                this.sqlConnection.Dispose();
            }

            public void Dispose()
            {
                //杩欓噷娓呴櫎闈炴墭绠¤祫婧�
                this.sqlConnection.Dispose();

                //璺宠繃缁堢粨杩囩▼
                GC.SuppressFinalize(this);
            }    

 

銆�銆�鍙互鐪嬪埌锛岃繖涓被涓嵆鏈夌粓缁撴柟娉曠殑閲嶅啓涔熸湁Dispose()鏂规硶锛岃繖鏍峰氨鑳戒繚璇侊細绋嬪簭鍛樿嫢蹇樿璋冪敤Dispose()鏂规硶閲婃斁闈炴墭绠¤祫婧愶紝閭d箞瀵硅薄灏变細鍦ㄥ瀮鍦惧洖鏀剁殑杩囩▼涓皟鐢ㄧ粓缁撴柟娉曟潵閲婃斁闈炴墭绠¤祫婧愶紱鑻ョ▼搴忓憳璋冪敤浜咲ispose()鏂规硶锛岄偅涔� GC.SuppressFinalize(this) 浼氫繚璇佸湪鍨冨溇鍥炴敹杩囩▼涓笉鍐嶄細璋冪敤瀵硅薄鐨勭粓缁撴柟娉曪紝閬垮厤涓嶅繀瑕佺殑璧勬簮寮�閿�銆傚彲璋�“鍙屽墤鍚堢挧”锛屼繚涓囨棤涓�澶便��

 

銆�銆�

銆�銆�璇濋煶鍒氳惤锛宑++绋嬪簭鍛�“鍣楅��”涓�澹拌藩鍊掑湪c#绋嬪簭鍛橀潰鍓嶏紝鍙屾墜姝绘鎷変綇c#绋嬪簭鍛樼殑瑁ゅ瓙锛�"甯堢埗锛屾敹鎴戜负寰掑惂锛佹垜涔熻瀛#…",c#绋嬪簭鍛樹笉鎯宠嚜宸辩殑瑁ゅ瓙琚壇鐮达紝浜庢槸绛斿簲浜嗕粬銆傛帍鍑轰竴鏈笂鍙ょ涔�…

銆�銆�璋堣皥.net瀵硅薄鐢熷懡鍛ㄦ湡_第14张图片

 

 

銆�銆�鍝︼紝涓嶏紝鎷块敊浜嗐�傘�傘�傚簲璇ユ槸杩欐湰銆傘�傘��

 

銆�銆�璋堣皥.net瀵硅薄鐢熷懡鍛ㄦ湡_第15张图片

 

銆�銆�鍏ㄥ墽缁�…

你可能感兴趣的:(璋堣皥.net瀵硅薄鐢熷懡鍛ㄦ湡)