Znn3bq.jpeg
²é¿´: 137  |  »Ø¸´: 0
µ±Ç°Ö÷ÌâÒѾ­´æµµ¡£

miRNA

ÖÁ×ðľ³æ (Ö°Òµ×÷¼Ò)

Ë®ÍõÖ®Íõ£¨ÓÞÓÞѧ԰¹ÜÀíÔ±£©

[½»Á÷] C++/CLIʵս¡ª¡ªHELLO

ÎÄÕÂÀ´Ô´£ºÌ켫
ʲôÊÇC++/CLI?

¡¡¡¡C++/CLIÃè»æµÄÊÇÒ»ÖÖ¶àÔª×éºÏ£¬´Ë´¦µÄ C++ µ±È»ÊÇÖ¸ Bjarne Stroustrup ÔÚ Bell ʵÑéÊÒ·¢Ã÷µÄC++±à³ÌÓïÑÔ¡£ËüÖ§³ÖËٶȺÍÖ´ÐÐ ÎļþµÄ´óС¶¼µÃµ½ÓÅ»¯µÄ¾²Ì¬¶ÔÏóÄ£ÐÍ¡£µ«³ýÁ˶ÑÄÚ´æ·ÖÅäÒÔÍ⣬Ëü²»Ö§³ÖÔËÐÐʱ³ÌÐò¶Ô¶ÔÏóµÄ¸ü¸Ä¡£ËüÔÊÐí¶Ôµ×²ã»úÆ÷½øÐÐÎÞÏÞÖÆµÄ·ÃÎÊ£¬µ«¶ÔÓÚÕýÔÚÔËÐеijÌÐòÖеĻÀàÐÍ¡¢ÒÔ¼°Ïà¹ØµÄ³ÌÐò»ù´¡¹¹Ô죬ËüµÄ·ÃÎÊÄÜÁ¦È´·Ç³£ÓÐÏÞ¡¢»òÕ߸ù±¾¾Í²»¿ÉÄÜ¡£ÎÒÔÚ΢ÈíµÄͬÊ Herb Sutter£¬Ò²ÊÇC++/CLIµÄÖ÷¼Ü¹¹Ê¦£¬ÈÏΪC++ÊÇÒ»¸ö»ìÄýÍÁÓïÑÔ¡£

¡¡¡¡¡°CLI¡±¼´¹«¹²ÓïÑÔ»ù´¡½á¹¹£¨Common Language Infrastructure£©£¬ÕâÊÇÒ»¸öÖ§³Ö¶¯Ì¬×é¼þ±à³ÌÄ£Ð͵Ķà²ã¼Ü¹¹¡£ÔÚÐí¶à·½Ã棬ËüËù±íʾµÄ¶ÔÏóÄ£ÐͺÍC++µÄÍêÈ«Ïà·´¡£ËüÊÇÒ»¸öÔËÐÐʱÈí¼þ²ã £¬Ò»¸öÐéÄâÖ´ÐÐϵͳ£¬ÔËÐÐÔÚÓ¦ÓóÌÐòºÍµ×²ã²Ù×÷ϵͳ֮¼ä¡£¶Ôµ×²ã»úÆ÷µÄ·ÃÎÊÊܵ½Ï൱ÑϸñµÄÏÞÖÆ¡£Ö§³Ö¶ÔÔËÐÐÖгÌÐòµÄ»î¶¯ÀàÐÍÒÔ¼°¹ØÁª³ÌÐòµÄ»ù´¡¹¹Ôì ½øÐдæÈ¡¡ª¡ª·¢Ïֺͽ¨¹¹¡£Ð±Ïß¡°/¡±±íʾ C++ ºÍ CLI Ö®¼äµÄÒ»Öְ󶨣¨binding£©£¬ÓйØÕâÖְ󶨵Äϸ½Ú¹¹³É±¾×¨À¸µÄ³£¹æÖ÷Ìâ¡£

¡¡¡¡ËùÒÔ£¬¶ÔÓÚ¡°Ê²Ã´ÊÇC++/CLI£¿¡±Õâ¸öÎÊÌâµÚÒ»¸ö×î½üËÆµÄ´ð°¸ÊÇ£ºËüÊǾ²Ì¬C++¶ÔÏóÄ£Ð͵½¶¯Ì¬CLI×é¼þ¶ÔÏóÄ£Ð͵ÄÒ»Öְ󶨣¬ ¼òÑÔÖ®£¬Ëü¾ÍÊÇÄãÈçºÎÓÃC++½øÐÐ.NET±à³Ì£¬¶ø²»ÊÇÓÃC#»òVisual Basic.NET¡£ÏóC#ºÍCLI×Ô¼ºÒ»Ñù£¬C++/CLIÕýÔÚ¾­Àú ECMA£¨Å·ÖÞ¼ÆËã»úÖÆÔìÉÌЭ»á£© ±ê×¼»¯²¢×îÖÕÒª¾­ÀúISO±ê×¼ÈÏÖ¤¡£

¡¡¡¡¹«¹²ÓïÑÔÔËÐÐʱ£¨CLR£©ÊÇ΢Èí°æµÄCLI£¬×¨ÃÅÓÃÓÚ Windows ²Ù×÷ϵͳ£¬Í¬Ñù£¬Visual C++ 2005ÊÇC++/CLI µÄʵÏÖ¡£

¡¡¡¡µÚ¶þ¸ö½üËÆ´ð°¸ÊÇ£ºÎÒ¾õµÃC++/CLIÔÚC++ÄÚ¼¯³É.NET±à³ÌÄ£ÐÍÓëÒÔǰ±´¶ûʵÑéÊÒÔÚµ±Ê±µÄC++ÖÐÓÃÄ£°å¼¯³É·ºÐͱà³ÌÒ»ÑùÓÐÒìÇúͬ¹¤Ö®´¦¡£Á½ÖÖÇé¿öÖУ¬ÄãÔÚÏÖÓÐC++´úÂë¿âÉϵÄͶ×ÊÒÔ¼°ÄãÏÖÓеÄC++רҵ¼¼Êõ¶¼µÃµ½±£»¤¡£ÕâÊÇC++/CLIÉè¼ÆµÄÒ»¸ö»ù±¾ ÒªÇó¡£

¡¡¡¡Ñ§Ï°C++/CLI

¡¡¡¡Ò»ÖÖC++/CLIÓïÑÔµÄÉè¼ÆÓÐÈý¸ö²ãÃæ£¬ÕâÈý¸ö²ãÃæÒ²ÊÊÓÃÓÚËùÓÐÓïÑÔ£ºÓïÑÔ²ãÓï·¨µ½¹«¹²ÀàÐÍϵͳ£¨CTS£© µÄÓ³É䣻ѡÔñΪ³ÌÐòÔ±Ö±½Ó²Ù×÷¶ø¹«¿ªµÄµ×²ãCLI»ù±¾×éÖ¯½á¹¹ µÄÏêϸ³Ì¶È£»ÒÔ¼°Ñ¡ÔñÒªÌṩµÄ³¬Ô½CLIÖ±½ÓÖ§³ÖµÄ¸½¼Ó¹¦ÄÜ¡£

¡¡¡¡µÚÒ»¸ö²ãÃæÊÇËùÓÐCLIÓïÑÔÔںܴó³Ì¶ÈÉ϶¼¹²Óеģ¬µÚ¶þ¸ö²ãÃæºÍµÚÈý²ãÃæÊÇijһCLIÓïÑÔÇø±ðÓÚÆäËüÓïÑԵĵط½¡£¸ù¾ÝËùÒª½â¾öµÄÎÊÌ⣬Äã¿ÉÒÔÑ¡Ôñijһ ÖÖÓïÑÔ£¬Ò²¿ÉÒÔ½«¶àÖÖCLIÓïÑÔ½áºÏÆðÀ´¡£Ñ§Ï°C++/CLIÓïÑÔÐèÒªÕÆÎÕÕâÈý¸öÉè¼Æ²ãÃæ¡£

¡¡¡¡ÔõÑù½«C++/CLI Ó³Éäµ½CTS£¿

¡¡¡¡Á˽âµ×²ãCTS ¶ÔѧϰC++/CLI·Ç³£ÓаïÖú£¬ËüÖ÷Òª°üÀ¨Èý¸ö³£¹æÀàÀàÐÍ£º

¡¡¡¡¶à̬ÒýÓÃÀàÐÍ£¬ÆäÓÃÓÚËùÓеÄÀà¼Ì³Ð£»

¡¡¡¡·Ç¶àֵ̬ÀàÐÍ£¬ÆäÓÃÓÚʵÏÖÐèÒªÔËÐÐʱЧÂʵľßÌåÀàÐÍ£¬ÈçÊý×ÖÀàÐÍ£»

¡¡¡¡³éÏó½Ó¿ÚÀàÐÍ£¬ÆäÓÃÓÚ¶¨ÒåÒ»¸öʵÏָýӿڵÄÒ»×éÒýÓÃÀàÐÍ»òÖµÀàÐ͹²Í¬Ê¹ÓõĹ«¹²²Ù×÷¼¯£»

¡¡¡¡ÔÚÉè¼Æ·½Ã棬ËäÈ»CTSµ½Ò»×éÄÚÖõÄÓïÑÔÀàÐ͵ÄÓ³Éä¶ÔÓÚËùÓÐCLIÓïÑÔÀ´Ëµ¶¼Êǹ²Í¬µÄ£¬µ±È»£¬Ã¿Ò»ÖÖCLIÓïÑÔµÄÓï·¨¸÷²»Ïàͬ¡£ÀýÈ磬ÔÚC#ÖУ¬ÎÒÃÇ¿ÉÒÔ ÕâÑùÀ´¶¨ÒåÒ»¸ö³éÏó»ùÀà Shape£¬´ÓÕâ¸öÀàÅÉÉúÌØ¶¨µÄ¼¸ºÎÄ£ÐͶÔÏó¡£

abstract class Shape { ... } // C#

¡¡¡¡¶øÔÚC++/CLIÖУ¬¿ÉÒÔÏóÏÂÃæÕâÑùд£¬ÒÔ±íʾÍêÈ«ÏàͬµÄµ×²ãÒýÓÃÀàÐÍ£º

ref class Shape abstract { ... }; // C++/CLI

¡¡¡¡Ôڵײã IL£¨ÖмäÓïÑÔ£©ÖУ¬ÒÔÉÏÁ½ÖÖÉùÃ÷ÒÔÍêÈ«ÏàͬµÄ·½Ê½±íʾ¡£Í¬Ñù£¬ÔÚC#ÖУ¬ÎÒÃÇ¿ÉÒÔÓÃÏÂÃæµÄ´úÂëÀ´¶¨ÒåÒ»¸ö¾ßÌåµÄ Point2D Àà £º

struct Point2D { ... } // C#

¡¡¡¡¶øÔÚC++/CLIÖÐд³É£º

value class Point2D { ... }; // C++/CLI

¡¡¡¡½èÖú C++/CLI Ö§³ÖµÄÀàÀàÐͼÒ×å±íÏÖÁËÒ»ÖÖ±¾»ú·½Ê½µÄ CTS ¼¯³É¡£ËüÈ·¶¨ÁËÄãµÄÓ﷨ѡÔñ£¬ÀýÈ磺

class native {};
value class V {};
ref class R {};
interface class I {};

¡¡¡¡CTS Ò²Ö§³Öö¾ÙÀàÀàÐÍ£¬ÆäÐÐΪ·½Ê½Óë±¾»úö¾ÙÉÔ΢ÓÐÐ©Çø±ð£¬C++/CLI¶Ô¶þÕß¶¼Ìṩ֧³Ö£º

enum native { fail, pass };
enum class CLIEnum : char { fail, pass};

¡¡¡¡Í¬Ñù£¬CTSÖ§³ÖÆä×Ô¼ºµÄÊý×éÀàÐÍ£¬ÆäÐÐΪҲÓë±¾»úÊý×éÀàÐÍÓÐÒ»¶¨²î±ð£¬Î¢ÈíͬÑù¶Ô¶þÕßÌṩ֧³Ö£º

int native[] = { 1,1,2,3,5,8 };
array£¼int£¾^ managed = { 1,1,2,3,5,8 };

¡¡¡¡ÄÇÖÖÈÏΪÈκÎÒ»ÖÖ CLI ÓïÑÔ±ÈÁíÒ»ÖÖÓïÑÔ¸ü½Ó½ü»ò¼¸ºõ¾ÍÊǵ½µ×²ãCLIµÄÓ³ÉäÊDz»¾«È·µÄ¡£Ïà·´£¬Ã¿Ò»ÖÖCLIÓïÑÔ¶¼Ö»ÊDZí´ïÁË×Ô¼º¶Ôµ×²ãCLI¶ÔÏóÄ£Ð͵ÄÒ»ÖÖ ¼û½â¡£ÔÚÏÂÒ»½ÚÄ㽫¸üÇå³þµØ¿´µ½ÕâÒ»µã¡£

¡¡¡¡CLI µÄϸ½Ú±ê×¼

¡¡¡¡ÔÚÉè¼ÆCLIÓïÑÔʱ±ØÐ뿼Âǵĵڶþ¸öÉè¼Æ²ãÃæÊÇÒª½«Ê²Ã´³Ì¶ÈµÄµ×²ãCLIʵÏÖÄ£ÐͽáºÏµ½¸ÃÓïÑÔÖС£Õâ¸öÓïÑÔ½â¾öʲôÑùµÄÎÊÌ⣿Ҫ½â¾öÕâЩÎÊÌâ±ØÐëҪʲôÑùµÄ¹¤¾ß£¿ ´ËÍ⣬¸ÃÓïÑԺܿÉÄÜÎüÒýÄÄÒ»Àà³ÌÐòÔ±£¿

¡¡¡¡ÏÂÃæ£¬ÎÒÃÇÀûÓ÷¢ÉúÔÚÍйܶÑÖеÄÖµÀàÐÍÎÊÌâ¡£ÔÚÐí¶àÇé¿öÏ£¬ÖµÀàÐÍ¿ÉÒÔÔÚÍйܶÑÖÐÕÒµ½×Ô¼º£º

¡¡¡¡Í¨¹ýÒþʽµÄ¿òÈë/¿ò³ö²Ù×÷£¨boxing£©¡ª¡ªµ±ÖµÀàÐ͵Äij¸öʵÀý±»¸³Öµ¸øÒ»¶ÔÏóʱ£¬»òÕßͨ¹ýij¸öδ±»¸ÄдµÄÖµÀàÐ͵÷ÓÃÒ»¸öÐéÄâ·½·¨Ê±£»

¡¡¡¡µ±ÖµÀàÐͱ»µ±×÷ΪÒýÓÃÀàÀàÐ͵ijÉԱʱ£»

¡¡¡¡µ±ÖµÀàÐͱ»µ±×÷CLIÊý×éÔªËØ´æ´¢Ê±£»

¡¡¡¡ÊÇ·ñÔÊÐí³ÌÐòÔ±´¦ÀíÕâÖÖÖµÀàÐ͵ØÖ·ÊÇÉè¼ÆCLIÓïÑÔʱ±ØÐëÒª½â¾öµÄÎÊÌâ¡£

¡¡¡¡´æÔÚµÄÎÊÌâ?

¡¡¡¡Î»ÓÚÍйܶÑÖеÄÈκζÔÏóÔÚÀ¬»ø»ØÊÕÆ÷½øÐÐÇåɨÊÕËõµÄ¹ý³ÌÖж¼ÓпÉÄÜÔâÓöÖØÐ·ÖÅ䣬ָÏòÕâЩ¶ÔÏóµÄÈκÎÖ¸Õë±ØÐë±»×·×Ù²¢ÔÚÔËÐÐʱµÃµ½¸üУ¬¶ø³ÌÐòÔ± ÎÞ·¨×Ô¼ºÊÖ¶¯×·×ÙËüÃÇ£¬Òò´Ë£¬Èç¹ûÄã±»ÔÊÐíÓÃij¸ö¿ÉÄÜÔÚÍйܶÑÖеÄÖµÀàÐ͵ĵØÖ·£¬ÄÇô³ýÁ˱¾»úÖ¸ÕëÍ⣬»¹ÐèÒªÒ»¸ö×·×ÙÐÎ̬µÄÖ¸Õë¡£

¡¡¡¡µ½µ×¸ÃÔõÑùȥȨºâÄØ£¿Ò»·½Ã棬ÐèÒª¿¼ÂǼò½àºÍ°²È«¡£Ö±½ÓÒýÈë¶ÔÒ»¸ö»òÒ»×é×·×ÙÖ¸ÕëµÄÖ§³Ö»áʹÓïÑÔ±äµÃ¸ü¸´ÔÓ¡£Èç¹û²»ÌṩÕâÖÖÖ§³Ö£¬ÓÉÓÚËùÐèµÄ¸´Ôӳ̶ȽµµÍ£¬´Ó¶ø¿ÉÒÔÕÒµ½µÄ³ÌÐòÔ±ÈËȺ¾Í»áÔö¼Ó¡£´ËÍ⣬ÔÊÐí³ÌÐòÔ±·ÃÎÊÕâЩÉúÃüÆÚ¶ÌÔݵÄÖµÀàÐÍ£¬ÔòÔö¼ÓÁ˳ÌÐòÔ±³ö´íµÄ¿ÉÄÜÐÔ¡£Ëý¾­Òâ»ò²»¾­ÒâµØ¶ÔÄÚ´æ×öһЩΣÏÕ¶¯×÷¡£²»Ö§³Ö×·×ÙÖ¸Õ룬¿ÉÒÔDZÔڵش´½¨½Ï°²È«µÄÔËÐÐʱ»·¾³¡£

¡¡¡¡ÁíÒ»·½Ã棬±ØÐ뿼ÂÇЧÂʺÍÁé»îÐÔ¡£Ã¿´Î½«ÖµÀàÐ͸³Öµ¸øÏàͬµÄ¶ÔÏ󣬸ÃÖµ¶¼»á·¢ÉúеĿòÈë/¿ò³ö²Ù×÷¡£ÔÊÐí·ÃÎÊÕâÖÖ¾­¹ý¿òÈë/¿ò³ö²Ù×÷µÄÖµÀàÐÍ £¬¾ÍÔÊÐíÔÚÄÚ´æÖнøÐиüвÙ×÷£¬ÕâÑù±ã¿ÉÄÜÌá¹©ÖØÒªµÄÐÔÄܸĽø¡£Ã»ÓÐijÖÖÐÎʽµÄ×·×ÙÖ¸Õ룬Ä㽫ÎÞ·¨ÓÃÖ¸ÕëËã·¨±éÀúCLIÊý×飬ÕâÒâζ×ÅCLIÊý×齫²»ÄÜ ÈÚÈëSTL£¨±ê׼ģ°å¿â£©Öеĵü´úÆ÷ģʽ£¬Ò²ÎÞ·¨Óë·ºÐÍË㷨Эͬ¹¤×÷¡£ÔÊÐí·ÃÎÊ¿òÈë/¿ò³öÖµÀàÐͽ«»á´ó´óÌá¸ßÉè¼ÆµÄÁé»îÐÔ¡£

¡¡¡¡ÔÚC++/CLI ÖУ¬Î¢ÈíÑ¡ÔñÌṩһϵÁÐÔÚÍйܶÑÖд¦ÀíÖµÀàÐ͵ÄѰַģʽ£º

int ival = 1024;
int^ boxedi = ival;

array£¼int£¾^ ia = gcnew array£¼int£¾;
interior_ptr£¼int£¾ begin = &ia[0];

value struct smallInt { int m_ival; ... } si;
pin_ptr£¼int£¾ ppi = &si.m_ival;

¡¡¡¡µäÐ굀 C++/CLI ¿ª·¢ÈËÔ±ÊÇÒ»¸ö¾­Ñé·á¸»µÄϵͳ³ÌÐòÔ±£¬ÆäÈÎÎñÊÇÌṩµ×²ã¼Ü¹¹ÒÔ¼°×÷Ϊ»ù´¡µÄºËÐÄÓ¦Óã¬ÒÔ´ËΪ»ù´¡À´¹¹½¨Î´À´¡£Ëý±ØÐë½â¾ö¿ÉÉìËõÐÔºÍÐÔÄÜÏà¹ØµÄÎÊÌ⣬²¢ÇÒ±ØÐë´Óϵͳһ¼¶À´¿´´ýµ×²ã CLI¡£Ä³ÖÖ CLI ÓïÑÔµÄϸ½Ú±ê×¼·´Ó³ÁËÆä³ÌÐòÔ±µÄÃæÃ²¡£

¡¡¡¡¸´ÔÓÐÔ±¾Éí²¢²»ÊǶÔÖÊÁ¿µÄ·ñ¶¨£¬ÈËÀàÉúÃü±Èµ¥ºËϸ°û¸´Ôӵö࣬Õ⵱Ȼ²»ÊÇÒ»¼þ»µÊ£¬È»¶ø£¬µ±µ¥Ò»¸ÅÄîµÄ±í´ï±äµÃ¸´ÔÓ»¯ÒÔºó£¬Õâ³£³£±»ÈÏΪÊÇÒ»¼þ»µÊ¡£ÔÚC++/CLIÖУ¬CLI¿ª·¢ÍŶÓÒѾ­ ³¢ÊÔÌṩһÖÖÓÅÑŵķ½Ê½À´±í´ïÒ»¸ö¸´ÔÓµÄÖ÷Ìå¡£

¡¡¡¡¸½¼Ó¹¦ÄÜ

¡¡¡¡µÚÈý¸öÉè¼Æ²ãÃæÊÇÌØ¶¨ÓïÑԲ㹦ÄÜÒª³¬¹ý±»CLIÖ±½ÓÖ§³ÖµÄ¹¦ÄÜ£¬ÕâÑù¾ÍÐèÒª½¨Á¢Ò»ÖÖÓïÑÔ²ãÖ§³ÖÓëCLIµ×²ãʵÏÖÄ£ÐÍÖ®¼äµÄÓ³Éä¡£ ÔÚijЩÇé¿öÏ£¬ÕâÊÇ×ö²»µ½µÄ£¬ÒòΪ¸ÃÓïÑÔÎÞ·¨µ÷½âCLIµÄÐÐΪ£¬ÔÚ»ùÀàµÄ¹¹Ô캯ÊýºÍÎö¹¹º¯ÊýÖнâ¾öÐ麯Êý±ãÊÇÀý×Ó¡£ÎªÁËÔÚÕâÖÖÇé¿öÖз´Ó³ISO-C++ÓïÒ壬ÐèÒªÔÚÿ¸ö»ùÀàµÄ¹¹Ô캯ÊýºÍÎö¹¹º¯ÊýÖÐ ÖØÐ°²ÅÅÐé±í¡£ÕâÊDz»¿ÉÄܵģ¬ÒòΪÐé±í²Ù×÷ÊÇÓÉÔËÐÐʱÍйܵ쬶ø·Çµ¥¶ÀµÄÓïÑÔÍйܡ£ Òò´Ë£¬ÕâÒ»Éè¼Æ²ãÃæÊÇÓÅÔ½ÐԺͿÉÐÐÐÔµÄÕÛÖС£C++/CLI ÌṩµÄ¸½¼Ó¹¦ÄÜÖ÷ÒªÓÐÈý¸ö·½Ã棺

¡¡¡¡ÒýÓÃÀàÐ͵Ä×ÊÔ´»ñÈ¡£¨Resource Acquisition£©ÐÎʽÊÇInitialization£¨RAII£©£¬ ÓÈÆäÊÇΪ±»³Æ×÷Õ¼¾ÝÏ¡ÓÐ×ÊÔ´µÄÀ¬»ø»ØÊÕÀàÐÍÈ·¶¨ÐÔÖÕÖ¹»¯£¨deterministic finalization£©Ìṩһ¸ö×Ô¶¯»¯µÄ»úÖÆ£»

¡¡¡¡ÓëC++¿½±´¹¹Ô캯ÊýºÍ¿½±´¸³Öµ²Ù×÷·ûÏà¹ØµÄÉî¶È¿½±´ÓïÒåÐÎʽ£¬µ«Ëü²»ÄÜÀ©Õ¹µ½ÖµÀàÐÍ£»

¡¡¡¡³ýÁË CLI·ºÐÍ»úÖÆÖ®Í⡪¡ªÕâÔ­À´ÊÇÎÒµÚÒ»¸öרÀ¸µÄÖ÷Ì⣬»¹ÎªCTSÀàÐÍÌṩC++Ä£°åµÄÖ±½ÓÖ§³Ö£¬ÁíÍ⣬»¹ÌṩÓÃÓÚ CLI ÀàÐ굀 STL ¿ÉÑéÖ¤°æ±¾£»

¡¡¡¡ÈÃÎÒÃÇ¿´Ò»¸ö¼òµ¥µÄÀý×Ó£ºÈ·¶¨ÐÔÖÕÖ¹»¯ÎÊÌâ¡£Óë¶ÔÏó¹ØÁªµÄÄÚ´æ±»À¬»ø»ØÊÕÆ÷»ØÊÕ֮ǰ£¬Èô´æÔÚÓëÖ®Ïà¹ØÁ¬µÄ Finalize ·½·¨£¬¸Ã·½·¨½«»á±»µ÷Óá£Äã¿ÉÒÔ°Ñ ¸Ã·½·¨¿´×÷ÊÇÒ»ÖÖ³¬¼¶Îö¹¹º¯Êý£¬ÒòΪËü²»ÒÀÀµÓڸöÔÏó³ÌÐòµÄÉúÃüÆÚ£¬Ëü±»³ÆÎªÖÕÖ¹»¯¡£µ÷Óà Finalize ·½·¨µÄʱ¼ä£¬ÉõÖÁÊÇ·ñµ÷ÓÃËüÊÇ䶨ÒåµÄ¡£Õâ¾ÍÊÇÀ¬»ø»ØÊÕÆ÷²»È·¶¨µÄÖÕÖ¹»¯²Ù×÷º¬ÒåÖ®ËùÔÚ¡£

¡¡¡¡²»È·¶¨ÐÔÖÕÖ¹»¯ÔÚ½øÐж¯Ì¬ÄÚ´æ¹ÜÀíʱ¿ÉÒÔºÜÓÐЧµØ¹¤×÷£¬µ±¿ÉÓÃÄÚ´æ¿Õ¼äÑÏÖØ²»×ãʱ£¬À¬»ø»ØÊÕÆ÷»á·¢»Ó×÷Óò¢½â¾öÎÊÌâ¡£µ«Êǵ±¶ÔÏóÉæ¼°µÄÊÇÄ³Ð©ÖØÒª×ÊÔ´£¬±ÈÈçÊý¾Ý¿âÁ¬½Ó¡¢Ä³ÖÖ ÀàÐ͵ÄËø¡¢±¾µØ¶ÑÄÚ´æÊ±£¬²»È·¶¨ÐÔÖÕÖ¹»¯µÄ±íÏÖÈ´²»¾¡ÈËÒâ¡£ÔÚÕâÖÖÇé¿öÏ£¬×îºÃÊǾ¡¿ìÊͷŲ»ÔÙÐèÒªµÄ×ÊÔ´¡£Ä¿Ç°CLI²ÉÓõĽâ¾ö°ì·¨ÊÇ£ºÄ³¸öÀàÔÚÆä IDisposable ½Ó¿ÚµÄ Dispose ·½·¨ÖÐÊÍ·Å×ÊÔ´£¬ÕâÀïµÄÎÊÌâÊÇ Dispose ÐèÒªÏÔʽµ÷Óã¬Òò´ËËü²»¿ÉÄܱ»Ö´ÐС£

¡¡¡¡C++µÄ»ù±¾Éè¼ÆÄ£Ê½ÊÇǰÊöµÄ×ÊÔ´»ñÈ¡£¨Resource Acquisition £©¼´³õʼ»¯£¨Initialization£©£¬ËüÒâζ×ÅÀàͨ¹ý¹¹Ô캯Êý »ñÈ¡×ÊÔ´£¬Ïà·´£¬Í¨¹ýÎö¹¹º¯ÊýÀ´ÊÍ·Å×ÊÔ´¡£ÔÚÀà¶ÔÏóµÄÉú´æÆÚÄÚÊÇ×Ô¶¯¹ÜÀíµÄ¡£

¡¡¡¡ÒÔÏÂÊÇÒýÓÃÀàÐÍÊÍ·Å×ÊÔ´µÄ¹ý³Ì£º

¡¡¡¡ÓÃÎö¹¹º¯ÊýѹËõÔÚÊÍ·Å×ÊÔ´¹ý³ÌÖбØÐëµÄ´úÂ룻

¡¡¡¡×Ô¶¯µ÷Óð󶨵½Àà¶ÔÏóÉú´æÆÚµÄÎö¹¹º¯Êý£»

¡¡¡¡CLIÖУ¬ÒýÓÃÀàÐ͵ÄÀàûÓÐÀàÎö¹¹µÄ¸ÅÄÒò´Ë£¬Îö¹¹º¯Êý±»Ó³Éäµ½µ×²ãʵÏÖÖÐÁíÍâµÄ¶«Î÷ÉÏ£¬±àÒëÆ÷ÔòÔÚÄÚ²¿Íê³ÉÈçÏÂת»»£º
Àà¾ß±¸Æä»ùÀàÁÐ±í£¬´Ó½Ó¿Ú IDisposable ÑÓÉì¼Ì³Ð£»

¡¡¡¡Îö¹¹º¯Êý±»×ª»»³ÉIDisposable µÄ Dispose ·½·¨£»

¡¡¡¡Õâ½ö½öÍê³ÉÁËÒ»°ë£¬»¹ÐèÒªÒ»ÖÖÎö¹¹º¯ÊýµÄ×Ô¶¯µ÷ÓÃ;¾¶¡£Ö§³ÖÒýÓÃÀàÐÍרÓõĻùÓÚ¶ÑÕ»µÄ·ûºÅ£¬Ò²¾ÍÊÇ˵ÆäÉúÃüÆÚÓëÆäÉùÃ÷µÄ·¶Î§Ïà¹ØÁª¡£±àÒëÆ÷ ÔÚÄÚ²¿×ª»»·ûºÅ£¬ÔÚÍйܶÑÖзÖÅäÒýÓöÔÏó¡£Ëæ×Å·¶Î§µÄÖÕÖ¹£¬±àÒëÆ÷²åÈëÒ»¸ö¶Ô Dispose ·½·¨µÄµ÷Ó᪡ªÓû§¶¨ÒåµÄÎö¹¹º¯Êý¡£Óë¸Ã¶ÔÏó¹ØÁªµÄʵ¼ÊÄÚ´æµÄ»ØÊÕÈÔÈ»ÔÚÀ¬»ø»ØÊÕÆ÷µÄÕÆ¿ØÖ®Ï¡£ÀýÈçÈç Figure 1 Ëùʾ¡£

¡¡¡¡C++/CLI ²»½ö½öÊÇC++µ½¹ÜÀíÊÀ½çµÄÀ©Õ¹£¬Ïà·´£¬Ëü±íÏÖÁËÒ»ÖÖÍêÈ«µÄ±à³Ì·¶Àý£¬ÀàËÆÓÚÔçÆÚ¶àÖØ¼Ì³ÐºÍ·ºÐͱà³Ì·¶Àý¼¯³Éµ½¸ÃÓïÑÔÒ»Ñù£¬ÎÒÈÏΪÕâ¸öÍŶÓÍê³ÉÁËÒ»Ïî½Ü³öµÄ¹¤×÷¡£

¡¡¡¡ÄÇô£¬ÄãÊÇÈçºÎ¿´´ý C++/CLI µÄÄØ?

¡¡¡¡C++/CLI´ú±íÁ˱¾µØºÍÍйܱà³ÌµÄ×ۺϣ¬ÔÚÕâ¸ö·´¸´¹ý³ÌÖУ¬ÕâÖÖ×ÛºÏͨ¹ý¼´¶ÀÁ¢¶øÓÖµÈͬµÄÔ´Âë¼¶ºÍ¶þ½øÖÆÔªËع²Í¬ÌåÀ´Íê³É£¬°üÀ¨»ìºÏģʽ£¨±¾»úºÍCTSÀàÐ͵ÄÔ´Âë¼¶»ìºÏ£¬ÒÔ¼°±¾»úºÍCIL¶ÔÏóÎļþµÄ¶þ½øÖÆ»ìºÏ£©£¬ ±¾µØÀàÐͺÍCTSÀàÐ͵ĻìºÏ£¬ÐÂÔöÁË»ìºÏ±¾µØ¶ÔÏóºÍCIL¶ÔÏóµÄ¶þ½øÖÆÎļþ£©£¬´¿Ä£Ê½£¨±¾»úºÍCTSÀàÐ͵ÄÔ´Âë¼¶»ìºÏ£¬ËùÓбàÒë¹ýµÄ CIL ¶ÔÏóÎļþ£©£¬±¾»úÀࣨ½öͨ¹ýרÃŵİü×°Àà²Å¿ÉÒÔ²Ù¿Ø CTS ÀàÐÍ£©£¬ÒÔ¼° CTS ÀֻࣨÄÜÒÔÖ¸ÕëÐÎʽ²Ù¿Ø±¾»úÀàÐÍ£©¡£

¡¡¡¡µ±È»£¬C++/CLI ³ÌÐòÔ±Ò²¿ÉÒÔÑ¡Ôñµ¥¶ÀÓà CLI ÀàÐÍÀ´±à³Ì£¬ÔÚÕâÖÖ·½Ê½ÖÐÌṩÄܱ»¼ÄË޵ĿÉÑéÖ¤´úÂ룬±ÈÈç SQL Server 2005 ÖеĴ洢¹ý³Ì¡£

¡¡¡¡ÏÖÔÚ£¬»Øµ½Ê²Ã´ÊÇ C++/CLI µÄÎÊÌ⣬ËüÊǽøÈë.NET±à³ÌÄ£Ð͵ĵÚÒ»µÀÃż÷£¬ÓÐÁË C++/CLI£¬Äã²»½ö¾ß±¸ÁËÇ¨ÒÆ C++ Ô´´úÂë¿âµÄ;¾¶£¬Í¬Ê±»¹¿ÉÒÔÇ¨ÒÆ C++ רҵ¼¼Êõ¡£ÕâÈÃÎҸоõ·Ç³£ã«Òâ¡£

[ Last edited by »ÃÓ°ÎÞºÛ on 2006-10-3 at 14:06 ]
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

¡¼ÓÞÓÞѧ԰¡½http://www.scifans.netÃâ·Ñ´úÀí|Ãâ·ÑÆÚ¿¯|ezproxy|ÎÄÏ×¼ìË÷|ѧÊõ×ÊÔ´|Ãâ·Ñ×ÊÔ´
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ miRNA µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 289 ·Ö105500ҩѧר˶Çóµ÷¼Á(ÕÒBÇøÑ§Ð£) +4 °×ÔÆ123456789 2026-04-13 4/200 2026-04-16 00:18 by ·ÛÇßÈô³¾
[¿¼ÑÐ] ³õÊÔ324 ÖÐҩѧ Ò»Ö¾Ô¸ÌìÖÐÒ½ Çóµ÷¼Á +3 ÀîµÄLucky 2026-04-10 3/150 2026-04-15 23:54 by ³ÂƤƤ
[¿¼ÑÐ] 294Çóµ÷¼Á +8 µ­È»654321 2026-04-15 8/400 2026-04-15 21:47 by lbsjt
[¿¼ÑÐ] ũѧ0904 312Çóµ÷¼Á +4 Say Never 2026-04-11 4/200 2026-04-14 09:10 by zs92450
[¿¼ÑÐ] 305Çóµ÷¼Á +8 Â꿨°Í¿¨boom 2026-04-11 8/400 2026-04-14 09:04 by pengliang8036
[¿¼ÑÐ] Çóµ÷¼Á +3 ÎÒ°®¸ßÊý¸ßÊý°®Î 2026-04-12 3/150 2026-04-14 01:00 by Íõ¬Bè±
[¿¼ÑÐ] 302Çóµ÷¼Á +10 Ò×£¡? 2026-04-13 10/500 2026-04-13 19:04 by lbsjt
[¿¼ÑÐ] Çóµ÷¼Á288 +7 ioodiiij 2026-04-10 9/450 2026-04-13 08:33 by Hayaay
[¿¼ÑÐ] Çóµ÷¼Á£¬Ò»Ö¾Ô¸²ÄÁÏ¿ÆÑ§Ó빤³Ì985£¬365·Ö£¬ +8 ²Ä»¯Àî¿É 2026-04-11 10/500 2026-04-12 08:42 by 852137818
[¿¼ÑÐ] µ÷¼Á +10 Ö»ÐðÀë±ð´Ç 2026-04-09 12/600 2026-04-11 20:57 by ÄæË®³Ë·ç
[¿¼ÑÐ] 296Çóµ÷¼Á +6 Íô£¡£¿£¡ 2026-04-09 6/300 2026-04-11 11:25 by zhq0425
[¿¼ÑÐ] ũѧ0904 312Çóµ÷¼Á +6 Say Never 2026-04-10 6/300 2026-04-11 10:33 by wwj2530616
[¿¼ÑÐ] 297Çóµ÷¼Á +9 Kwgyz 2026-04-09 9/450 2026-04-11 10:09 by zhq0425
[¿¼ÑÐ] 346£¬¹¤¿Æ0854Çóµ÷¼Á£¬×¨Ë¶ +7 moser233 2026-04-10 8/400 2026-04-11 08:52 by Öí»á·É
[¿¼ÑÐ] 284Çóµ÷¼Á +12 archer.. 2026-04-10 13/650 2026-04-11 08:44 by zhq0425
[¿¼ÑÐ] 342µç×ÓÐÅϢר˶Çóµ÷¼Á +9 ÄãÈÃÎÒÔõôÀóÖ¦ 2026-04-10 10/500 2026-04-11 08:33 by zhq0425
[¿¼ÑÐ] µ÷¼Á +19 СÕÅZA 2026-04-10 20/1000 2026-04-10 22:08 by Öí»á·É
[¿¼ÑÐ] 309Çóµ÷¼Á +14 wdhw 2026-04-10 15/750 2026-04-10 21:06 by zhouxiaoyu
[¿¼ÑÐ] ¼ª´ó¼ÆËã»ú¼¼Êõ331·Ö£¬Ó¢ÓïÁù¼¶£¬Çóµ÷¼Á +3 ·å·å021116 2026-04-09 3/150 2026-04-10 20:01 by chemisry
[¿¼ÑÐ] Çൺ¿Æ¼¼´óѧ²ÄÁÏѧԺ£¬»·¾³Ñ§Ôºµ÷¼Á²¹Â¼4ÔÂ10ÈÕÒÔǰ¶¼¿ÉÒÔ +3 1Çà¿Æ´ó¡£ 2026-04-09 5/250 2026-04-10 09:58 by ôæôæÒ»ÊéÉú
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û