{"id":3092,"date":"2023-05-11T01:22:43","date_gmt":"2023-05-10T17:22:43","guid":{"rendered":"https:\/\/lonelinerd.com\/?p=3092"},"modified":"2023-06-16T16:16:51","modified_gmt":"2023-06-16T08:16:51","slug":"delegate","status":"publish","type":"post","link":"https:\/\/lonelinerd.com\/index.php\/2023\/05\/11\/delegate\/","title":{"rendered":"C#\u7b46\u8a18 \u2013 \u59d4\u6258"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"3092\" class=\"elementor elementor-3092\">\n\t\t\t\t\t\t<div class=\"elementor-inner\">\n\t\t\t\t<div class=\"elementor-section-wrap\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-fb1ca97 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"fb1ca97\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b21d3fb\" data-id=\"b21d3fb\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a56a2bf elementor-widget elementor-widget-text-editor\" data-id=\"a56a2bf\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<h5><strong>\u59d4\u6258\u7684\u4f7f\u7528<\/strong><\/h5><ul><li class=\"md-end-block md-heading\"><span class=\"md-plain\">\u8072\u660e\u59d4\u6258\u985e\u578b<\/span><\/li><\/ul><ul><li style=\"list-style-type: none;\"><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">delegate \u8fd4\u56de\u503c \u59d4\u6258\u5b57\u6bb5\u540d\uff08\u53c3\u6578\u5217\u8868\uff09<\/span><\/p><\/li><li><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"c#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">delegate<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">VarName<\/span>(<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">input<\/span>);<\/span><\/pre><\/li><\/ul><\/li><li><span class=\"md-plain\">\u5275\u5efa\/\u4f7f\u7528\u4e00\u500b\u8207\u5c0d\u61c9\u7684\u59d4\u6258\u7c3d\u540d\uff08\u53c3\u6578\/\u8fd4\u56de\u503c\u5b8c\u5168\u5339\u914d\uff09\u4e00\u6a23\u7684\u65b9\u6cd5<\/span><ul><li><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">void \u8207 \u975evoid \u7684\u8fd4\u56de\u985e\u578b\u662f\u4e0d\u5339\u914d\u7684\uff0c\u539f\u56e0\u5728\u65bc \u7cfb\u7d71\u7684 JIT\uff08Just-In-Time\uff09\u968e\u6bb5\u9700\u8981\u77e5\u9053\uff0c\u5728\u57f7\u884c\u65b9\u6cd5\u6642\u8fd4\u56de\u503c\u662f\u5426\u6703\u7559\u5728\u68e7\u4e0a\u3002<\/span><\/span><\/span><\/li><\/ul><\/li><li><span class=\"md-plain\">\u5275\u5efa\u59d4\u6258\u5be6\u4f8b<\/span><ul><li>\u00a0\u5275\u5efa\u7684\u8868\u9054\u5f0f\u5f62\u5f0f\u53d6\u6c7a\u65bc\u662f\u975c\u614b\u65b9\u6cd5\u9084\u662f\u5be6\u4f8b\u65b9\u6cd5<br \/><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u975c\u614b\u65b9\u6cd5\uff1a\u76f4\u63a5\u6307\u5b9a\u985e\u578b\u540d<\/span><\/p><\/li><\/ul><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"c#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-variable\">VarName<\/span> <span class=\"cm-variable\">varName1<\/span>; <span class=\"cm-comment\">\/\/Delegate<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">varName1<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">VarName<\/span>(<span class=\"cm-variable\">StaticClass<\/span>.<span class=\"cm-variable\">method<\/span>); <span class=\"cm-comment\">\/\/static method in delegate<\/span><\/span><\/pre><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5be6\u4f8b\u65b9\u6cd5\uff1a\u9700\u8981\u5148\u5275\u5efa\u985e\u578b\u7684\u5be6\u4f8b\uff0c\u9019\u500b\u5be6\u4f8b\u7a31\u70ba\u300c\u64cd\u4f5c\u7684\u76ee\u6a19\u300d<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u8abf\u7528\u59d4\u6258\u5be6\u4f8b\u6642\uff0c<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u6703\u70ba\u9019\u500b\u5c0d\u8c61\u8abf\u7528\u65b9\u6cd5\u3002<\/span><\/span><\/span><\/p><\/li><\/ul><\/li><\/ul><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"c#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-variable\">VarName<\/span> <span class=\"cm-variable\">varName2<\/span>; <span class=\"cm-comment\">\/\/Delegate<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">Instance<\/span> <span class=\"cm-variable\">instance<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">Instance<\/span>();<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">varName2<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">VarName<\/span>(<span class=\"cm-variable\">instance<\/span>.<span class=\"cm-variable\">method<\/span>); <span class=\"cm-comment\">\/\/instance method in delegate<\/span><\/span><\/pre><\/li><\/ul><\/li><\/ul><ul><li style=\"list-style-type: none;\"><ul><li style=\"list-style-type: none;\"><ul><li style=\"list-style-type: none;\"><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u5982\u679c\u59d4\u6258\u5be6\u4f8b\u672c\u8eab\u4e0d\u80fd\u88ab\u56de\u6536\uff0c\u59d4\u6258\u5be6\u4f8b\u6703\u963b\u6b62\u5b83\u7684\u64cd\u4f5c\u76ee\u6a19\u88ab\u4f5c\u70ba\u5783\u573e\u56de\u6536\u3002\u9019\u53ef\u80fd\u6703\u9020\u6210\u5167\u5b58\u6cc4\u6f0f\u3002<\/span><\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u5c24\u5176\u662f\u7576\u64cd\u4f5c\u76ee\u6a19\u7684\u9810\u671f\u5b58\u6d3b\u5468\u671f\u6bd4\u59d4\u6258\u5be6\u4f8b\u672c\u8eab\u8981\u77ed\uff0c\u800c\u5982\u679c\u59d4\u6258\u5be6\u4f8b\u672c\u8eab\u7121\u6cd5\u88ab\u56de\u6536\uff0c\u5c31\u6703\u5c0e\u81f4\u64cd\u4f5c\u76ee\u6a19\u7684\u5b58\u6d3b\u5468\u671f\u88ab\u5ef6\u9577\u3002<\/span><\/span><\/span><\/p><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/li><li class=\"md-end-block md-heading\"><span class=\"md-plain\">\u8abf\u7528\u59d4\u6258\u5be6\u4f8b<\/span><ul><li class=\"md-end-block md-heading\"><span class=\"md-plain\">\u5982\u679c\u6709\u4e00\u500b\u59d4\u6258\u7684\u8b8a\u91cf\uff0c\u53ef\u4ee5\u76f4\u63a5\u5c07\u5176\u8996\u70ba\u65b9\u6cd5\u672c\u8eab<\/span><\/li><li class=\"md-end-block md-heading\"><span class=\"md-plain\">\u59d4\u6258\u76f8\u7576\u65bc\u6307\u5b9a\u4e00\u4e9b\u4ee3\u78bc\u5728\u7279\u5b9a\u6642\u9593\u57f7\u884c\uff08\u5982\u55ae\u6483\u4e00\u500b\u6309\u9215\u5f8c\u767c\u751f\u67d0\u4e8b\uff09<\/span><\/li><\/ul><\/li><\/ul><h5 class=\"md-end-block md-heading\"><strong><span class=\"md-plain\">\u5408\u5e76\u548c\u522a\u9664\u59d4\u6258<\/span><\/strong><\/h5><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u59d4\u6258\u985e\uff08System.Delegate\uff09\u4e2d\u6709\u5169\u500b\u975c\u614b\u65b9\u6cd5<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">Combine\uff08\u901a\u904e+=\/+\u64cd\u4f5c\u7b26\u8abf\u7528\uff09<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">Remove\uff08\u901a\u904e-=\/-\u64cd\u4f5c\u7b26\u8abf\u7528\uff09<\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u59d4\u6258\u662f\u4e0d\u6613\u8b8a\u7684\u3002\u8207String\u985e\u578b\u76f8\u4f3c\uff0c\u5be6\u4f8b\u88ab\u5275\u5efa\u5f8c\uff0c\u6709\u95dc\u5b83\u7684\u4e00\u5207\u5c31\u4e0d\u80fd\u6539\u8b8a<\/span><\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">Combine\u548cRemove\u90fd\u6703\u64cd\u4f5c\u73fe\u6709\u7684\u5be6\u4f8b\u4e26\u5275\u5efa\u4e00\u500b\u65b0\u5be6\u4f8b\uff0c\u4e0d\u6703\u66f4\u6539\u539f\u59cb\u59d4\u6258\u5c0d\u8c61\u3002<\/span><\/span><\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u8abf\u7528\u59d4\u6258\u6642\uff0c\u6240\u6709\u64cd\u4f5c\u5c07\u9806\u5e8f\u57f7\u884c<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5982\u679c\u59d4\u6258\u7684\u7c3d\u540d\u6709\u4e00\u500b\u975evoid\u7684\u8fd4\u56de\u985e\u578b\uff0c\u5247Invoke\u7684\u8fd4\u56de\u503c\u662f<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u6700\u5f8c\u4e00\u500b\u64cd\u4f5c\u7684\u8fd4\u56de\u503c<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5047\u8a2d\u73fe\u5728\u6709\u4e00\u500b\u64cd\u4f5c\u5217\u8868\uff08a, b, c\uff09\uff0c\u64cd\u4f5cb\u7684\u904e\u7a0b\u4e2d\u62cb\u51fa\u4e00\u500b\u7570\u5e38\uff0c<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u7570\u5e38\u6703\u7acb\u5373\u50b3\u64ad\uff0c\u4e26\u963b\u6b62\u57f7\u884c\u5176\u4ed6\u5f8c\u7e8c\u64cd\u4f5c\u3002<\/span><\/span><\/span><\/p><\/li><\/ul><\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2acdf1e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2acdf1e\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3dcaed7\" data-id=\"3dcaed7\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-49030cf elementor-widget elementor-widget-text-editor\" data-id=\"49030cf\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<h5 class=\"md-end-block md-heading\"><strong><span class=\"md-plain\">\u59d4\u6258\u7684\u5167\u90e8\u5be6\u73fe<\/span><\/strong><\/h5><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p md-focus\"><span class=\"md-plain\">\u5728\u975e\u6258\u7ba1C\/C++\u4e2d\uff0c\u975e\u6210\u54e1\u51fd\u6578\u7684\u5730\u5740\u53ea\u662f\u4e00\u500b\u5167\u5b58\u5730\u5740\uff0c\u4e0d\u651c\u5e36\u4efb\u4f55\u984d\u5916\u4fe1\u606f\uff0c\u4e0d\u662f\u985e\u578b\u5b89\u5168\u7684<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u800c.NET\u7684\u59d4\u6258\u5247\u53ef\u8996\u70ba<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u300c\u985e\u578b\u5b89\u5168\u300d\u7684\u56de\u8abf\u6a5f\u5236<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5c07\u65b9\u6cd5\u7d81\u5b9a\u5230\u59d4\u6258\u6642\uff0cC#\u548cCLR<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u5141\u8a31\u5f15\u7528\u985e\u578b\u7684\u5354\u8b8a\u6027\u548c\u9006\u8b8a\u6027<\/span><\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5354\u8b8a\uff1a\u65b9\u6cd5\u80fd<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u8fd4\u56de\u5f9e\u59d4\u6258\u985e\u578b\u7684\u8fd4\u56de\u985e\u578b\u6d3e\u751f\u7684\u4e00\u500b\u985e\u578b<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u9006\u8b8a\uff1a\u65b9\u6cd5\u7684<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u53c3\u6578\u53ef\u4ee5\u662f\u59d4\u6258\u985e\u578b\u7684\u53c3\u6578\u985e\u578b\u7684\u57fa\u985e<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">delegate<\/span> <span class=\"cm-variable-3\">object<\/span> <span class=\"cm-def\">MyCallback<\/span>(<span class=\"cm-variable\">FileStream<\/span> <span class=\"cm-variable\">fs<\/span>);<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">Program<\/span><\/span><br \/><span role=\"presentation\">{ \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">Main<\/span>(<span class=\"cm-variable-3\">string<\/span>[] <span class=\"cm-variable\">args<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">CallBackMethods<\/span> <span class=\"cm-variable\">cm<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">CallBackMethods<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">MyCallback<\/span> <span class=\"cm-variable\">callback<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">cm<\/span>.<span class=\"cm-variable\">SomeMethod<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0  } \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u53ea\u6709<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u5f15\u7528\u985e\u578b<\/span><\/span><\/span><span class=\"md-plain\">\u624d\u652f\u6301\u5354\u8b8a\u6027\u548c\u9006\u8b8a\u6027<\/span><\/p><\/li><\/ul><\/li><\/ul><\/li><\/ul><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u7de8\u8b6f\u5668\u548cCLR\u5982\u4f55\u5354\u540c\u5de5\u4f5c\u4f86\u5be6\u73fe\u59d4\u6258<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u4ee5\u4e0a\u9762\u7684\u59d4\u6258\u8072\u660e\u4ee3\u78bc\u70ba\u4f8b\uff1a<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">delegate<\/span> <span class=\"cm-variable-3\">object<\/span> <span class=\"cm-def\">MyCallback<\/span>(<span class=\"cm-variable\">FileStream<\/span> <span class=\"cm-variable\">fs<\/span>);<\/span><\/pre><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u7de8\u8b6f\u5668\u5be6\u969b\u4e0a\u6703\u70ba\u9019\u6bb5\u4ee3\u78bc\u5b9a\u7fa9\u4e00\u500b\u5b8c\u6574\u7684\u985e<\/span><\/p><\/li><\/ul><\/li><\/ul><\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-fe406d9 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"fe406d9\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9491da4\" data-id=\"9491da4\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c2765c6 elementor-widget elementor-widget-image\" data-id=\"c2765c6\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"842\" height=\"113\" src=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/03\/CLR_17_1.png\" class=\"attachment-large size-large wp-image-2248\" alt=\"\" srcset=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/03\/CLR_17_1.png 842w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/03\/CLR_17_1-300x40.png 300w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/03\/CLR_17_1-768x103.png 768w\" sizes=\"auto, (max-width: 842px) 100vw, 842px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e74da3 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9e74da3\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ca11c32\" data-id=\"ca11c32\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3d8a9bc elementor-widget elementor-widget-text-editor\" data-id=\"3d8a9bc\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<ul><li style=\"list-style-type: none;\"><ul class=\"ul-list\" data-mark=\"-\"><li style=\"list-style-type: none;\"><ul><li style=\"list-style-type: none;\"><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item md-focus-container\"><p class=\"md-end-block md-p md-focus\"><span class=\"md-plain md-expand\">\u63db\u6210C#\u4ee3\u78bc\u7684\u8a71\uff0c\u5927\u6982\u6703\u662f\u9019\u6a23\u7684<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">private<\/span> <span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">MyCallback<\/span>:<span class=\"cm-variable\">System<\/span>.<span class=\"cm-variable\">MulticastDelegate<\/span><\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u69cb\u9020\u5668<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable\">MyCallback<\/span>(<span class=\"cm-variable-3\">Object<\/span> <span class=\"cm-meta\">@object<\/span>, <span class=\"cm-variable\">IntPtr<\/span> <span class=\"cm-variable\">method<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">virtual<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">Invoke<\/span>(<span class=\"cm-variable\">FileStream<\/span> <span class=\"cm-keyword\">value<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">virtual<\/span> <span class=\"cm-variable\">IAsyncResult<\/span> <span class=\"cm-variable\">BeginInvoke<\/span>(<span class=\"cm-variable\">FileStream<\/span> <span class=\"cm-variable\">fs<\/span>, <span class=\"cm-variable\">AsyncCallback<\/span> <span class=\"cm-variable\">callback<\/span>, <span class=\"cm-variable-3\">Object<\/span> <span class=\"cm-meta\">@object<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">virtual<\/span> <span class=\"cm-variable-3\">Object<\/span> <span class=\"cm-variable\">EndInvoke<\/span>(<span class=\"cm-variable\">IAsyncResult<\/span> <span class=\"cm-variable\">result<\/span>);<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5143\u6578\u64da<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"\" spellcheck=\"false\"><span role=\"presentation\">TypeDef #1 (02000002)<\/span><br \/><span role=\"presentation\">-------------------------------------------------------<\/span><br \/><span role=\"presentation\">TypDefName: CLR_Ch17.MyCallback  (02000002)<\/span><br \/><span role=\"presentation\">Flags \u00a0 \u00a0 : [NotPublic] [AutoLayout] [Class] [Sealed] [AnsiClass]  (00000100)<\/span><br \/><span role=\"presentation\">Extends \u00a0 : 0100000C [TypeRef] System.MulticastDelegate<\/span><br \/><span role=\"presentation\">Method #1 (06000001) <\/span><br \/><span role=\"presentation\">-------------------------------------------------------<\/span><br \/><span role=\"presentation\">MethodName: .ctor (06000001)<\/span><br \/><span role=\"presentation\">Flags \u00a0 \u00a0 : [Public] [HideBySig] [ReuseSlot] [SpecialName] [RTSpecialName] [.ctor]  (00001886)<\/span><br \/><span role=\"presentation\">RVA \u00a0 \u00a0 \u00a0 : 0x00000000<\/span><br \/><span role=\"presentation\">ImplFlags : [Runtime] [Managed]  (00000003)<\/span><br \/><span role=\"presentation\">CallCnvntn: [DEFAULT]<\/span><br \/><span role=\"presentation\">hasThis <\/span><br \/><span role=\"presentation\">ReturnType: Void<\/span><br \/><span role=\"presentation\">2 Arguments<\/span><br \/><span role=\"presentation\">Argument #1:  Object<\/span><br \/><span role=\"presentation\">Argument #2:  I<\/span><br \/><span role=\"presentation\">2 Parameters<\/span><br \/><span role=\"presentation\">(1) ParamToken : (08000001) Name : object flags: [none] (00000000)<\/span><br \/><span role=\"presentation\">(2) ParamToken : (08000002) Name : method flags: [none] (00000000)<\/span><br \/><br \/><span role=\"presentation\">Method #2 (06000002) <\/span><br \/><span role=\"presentation\">-------------------------------------------------------<\/span><br \/><span role=\"presentation\">MethodName: Invoke (06000002)<\/span><br \/><span role=\"presentation\">Flags \u00a0 \u00a0 : [Public] [Virtual] [HideBySig] [NewSlot]  (000001c6)<\/span><br \/><span role=\"presentation\">RVA \u00a0 \u00a0 \u00a0 : 0x00000000<\/span><br \/><span role=\"presentation\">ImplFlags : [Runtime] [Managed]  (00000003)<\/span><br \/><span role=\"presentation\">CallCnvntn: [DEFAULT]<\/span><br \/><span role=\"presentation\">hasThis <\/span><br \/><span role=\"presentation\">ReturnType: Object<\/span><br \/><span role=\"presentation\">1 Arguments<\/span><br \/><span role=\"presentation\">Argument #1:  Class System.IO.FileStream<\/span><br \/><span role=\"presentation\">1 Parameters<\/span><br \/><span role=\"presentation\">(1) ParamToken : (08000003) Name : fs flags: [none] (00000000)<\/span><br \/><br \/><span role=\"presentation\">Method #3 (06000003) <\/span><br \/><span role=\"presentation\">-------------------------------------------------------<\/span><br \/><span role=\"presentation\">MethodName: BeginInvoke (06000003)<\/span><br \/><span role=\"presentation\">Flags \u00a0 \u00a0 : [Public] [Virtual] [HideBySig] [NewSlot]  (000001c6)<\/span><br \/><span role=\"presentation\">RVA \u00a0 \u00a0 \u00a0 : 0x00000000<\/span><br \/><span role=\"presentation\">ImplFlags : [Runtime] [Managed]  (00000003)<\/span><br \/><span role=\"presentation\">CallCnvntn: [DEFAULT]<\/span><br \/><span role=\"presentation\">hasThis <\/span><br \/><span role=\"presentation\">ReturnType: Class System.IAsyncResult<\/span><br \/><span role=\"presentation\">3 Arguments<\/span><br \/><span role=\"presentation\">Argument #1:  Class System.IO.FileStream<\/span><br \/><span role=\"presentation\">Argument #2:  Class System.AsyncCallback<\/span><br \/><span role=\"presentation\">Argument #3:  Object<\/span><br \/><span role=\"presentation\">3 Parameters<\/span><br \/><span role=\"presentation\">(1) ParamToken : (08000004) Name : fs flags: [none] (00000000)<\/span><br \/><span role=\"presentation\">(2) ParamToken : (08000005) Name : callback flags: [none] (00000000)<\/span><br \/><span role=\"presentation\">(3) ParamToken : (08000006) Name : object flags: [none] (00000000)<\/span><br \/><br \/><span role=\"presentation\">Method #4 (06000004) <\/span><br \/><span role=\"presentation\">-------------------------------------------------------<\/span><br \/><span role=\"presentation\">MethodName: EndInvoke (06000004)<\/span><br \/><span role=\"presentation\">Flags \u00a0 \u00a0 : [Public] [Virtual] [HideBySig] [NewSlot]  (000001c6)<\/span><br \/><span role=\"presentation\">RVA \u00a0 \u00a0 \u00a0 : 0x00000000<\/span><br \/><span role=\"presentation\">ImplFlags : [Runtime] [Managed]  (00000003)<\/span><br \/><span role=\"presentation\">CallCnvntn: [DEFAULT]<\/span><br \/><span role=\"presentation\">hasThis <\/span><br \/><span role=\"presentation\">ReturnType: Object<\/span><br \/><span role=\"presentation\">1 Arguments<\/span><br \/><span role=\"presentation\">Argument #1:  Class System.IAsyncResult<\/span><br \/><span role=\"presentation\">1 Parameters<\/span><br \/><span role=\"presentation\">(1) ParamToken : (08000007) Name : result flags: [none] (00000000)<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u8a72\u985e\u4e00\u5171\u67094\u500b\u65b9\u6cd5\uff1a<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u69cb\u9020\u65b9\u6cd5<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">Invoke<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">BeginInvoke<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">EndInvoke<\/span><\/span><\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u8a2a\u554f\u6b0a\u9650\u8207\u59d4\u6258\u7684\u8072\u660e\u4e00\u81f4<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u7531\u65bc\u59d4\u6258\u5be6\u969b\u4e0a\u662f\u4e00\u500b\u985e\uff0c\u56e0\u6b64\u80fd\u5b9a\u7fa9\u985e\u7684\u5730\u65b9\u90fd\u80fd\u5b9a\u7fa9\u59d4\u6258<\/span><\/p><\/li><\/ul><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u6240\u6709\u59d4\u6258\u985e\u578b\u90fd\u6d3e\u751f\u81ea<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">MulticastDelegate<\/span><\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">MulticastDelegate\u6d3e\u751f\u81eaDelegate\uff0cDelegate\u518d\u6d3e\u751f\u81eaObject<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u9019\u662fC#\u7684\u6b77\u53f2\u907a\u7559\u554f\u984c\uff0cFCL\u672c\u8a72\u53ea\u6709\u4e00\u500b\u59d4\u6258\u985e<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">MulticastDelegate\u6709\u4e09\u500b\u6700\u91cd\u8981\u7684\u79c1\u6709\u5b57\u6bb5<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><figure class=\"md-table-fig\"><table class=\"md-table\"><thead><tr class=\"md-end-block\"><th><span class=\"td-span\"><span class=\"md-plain\">Field<\/span><\/span><\/th><th><span class=\"td-span\"><span class=\"md-plain\">Type<\/span><\/span><\/th><th><span class=\"td-span\"><span class=\"md-plain\">Description<\/span><\/span><\/th><\/tr><\/thead><tbody><tr class=\"md-end-block\"><td><span class=\"td-span\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">_target<\/span><\/span><\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">System.Object<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">\u9019\u500b\u5b57\u6bb5\u5f15\u7528\u7684\u662f<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u56de\u8abf\u65b9\u6cd5\u7684\u64cd\u4f5c\u5c0d\u8c61<\/span><\/span><\/span><span class=\"md-plain\">\uff1b\u5982\u679c\u662f\u975c\u614b\u65b9\u6cd5\uff0c\u8a72\u503c\u70banull<\/span><\/span><\/td><\/tr><tr class=\"md-end-block\"><td><span class=\"td-span\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">_methodPtr<\/span><\/span><\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">System.IntPtr<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">\u5167\u90e8\u7684\u6574\u6578\u503c\uff0cCLR\u7528\u5b83<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u6a19\u8b58\u8981\u56de\u8abf\u7684\u65b9\u6cd5<\/span><\/span><\/span><\/span><\/td><\/tr><tr class=\"md-end-block\"><td><span class=\"td-span\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">_invocationList<\/span><\/span><\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">System.Object<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">\u901a\u5e38\u70banull\u3002\u69cb\u9020<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u59d4\u6258\u93c8<\/span><\/span><\/span><span class=\"md-plain\">\u6642\u5f15\u7528\u4e00\u500b\u59d4\u6258\u6578\u7d44<\/span><\/span><\/td><\/tr><\/tbody><\/table><\/figure><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u6240\u6709\u59d4\u6258\u985e\u578b\u90fd\u6709\u4e00\u500b\u63a5\u53d7\u5169\u500b\u53c3\u6578\u7684\u69cb\u9020\u5668<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u53c3\u6578<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">Object @object<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">IntPrt method<\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u7576\u6211\u5011\u69cb\u9020\u4e00\u500b\u59d4\u6258\u6642\uff0cC#\u7de8\u8b6f\u5668\u6703\u5206\u6790\u6e90\u4ee3\u78bc\u4f86\u78ba\u5b9a\u5f15\u7528\u7684\u5c0d\u8c61\u548c\u65b9\u6cd5<\/span><\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u5c0d\u8c61\u7684\u5f15\u7528\u6703\u88ab\u50b3\u7d66\u69cb\u9020\u5668\u7684@object\u53c3\u6578\uff0c\u4e26\u4fdd\u5b58\u5728_target\u4e2d<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u65b9\u6cd5\u7684\u6a19\u8b58\u503c\u6703\u88ab\u50b3\u905e\u81f3\u69cb\u9020\u5668\u7684method\u53c3\u6578\uff0c\u4e26\u4fdd\u5b58\u5728_methodPtr\u4e2d<\/span><\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u8a72\u503c\u5f9eMethodDef\/MemberRef\u5143\u6578\u64da\u4e2d\u7684token\u7372\u5f97<\/span><\/span><\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u6bcf\u500b\u59d4\u6258\u5c0d\u8c61\u90fd\u662f\u4e00\u500b\u5305\u88dd\u5668\uff0c\u5176\u4e2d\u5305\u88dd\u4e86\u4e00\u500b\u65b9\u6cd5\u548c\u8abf\u7528\u8a72\u65b9\u6cd5\u6642\u64cd\u4f5c\u7684\u5c0d\u8c61<\/span><\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-variable\">CallBackMethods<\/span> <span class=\"cm-variable\">cm<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">CallBackMethods<\/span>();<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">MyCallback<\/span> <span class=\"cm-variable\">myCallback<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">MyCallback<\/span>(<span class=\"cm-variable\">cm<\/span>.<span class=\"cm-variable\">SomeMethod<\/span>);<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">MyCallback<\/span> <span class=\"cm-variable\">myStaticCallback<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">MyCallback<\/span>(<span class=\"cm-variable\">CallBackMethods<\/span>.<span class=\"cm-variable\">SomeStaticMethod<\/span>);<\/span><\/pre><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-fcc4442 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"fcc4442\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-374b2de\" data-id=\"374b2de\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-be5900a elementor-widget elementor-widget-image\" data-id=\"be5900a\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"979\" height=\"372\" src=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/03\/CLR_17_2.png\" class=\"attachment-large size-large wp-image-2249\" alt=\"\" srcset=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/03\/CLR_17_2.png 979w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/03\/CLR_17_2-300x114.png 300w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/03\/CLR_17_2-768x292.png 768w\" sizes=\"auto, (max-width: 979px) 100vw, 979px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-0c710a3 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"0c710a3\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2a3d953\" data-id=\"2a3d953\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8e34839 elementor-widget elementor-widget-text-editor\" data-id=\"8e34839\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<h5 class=\"md-end-block md-heading\"><strong><span class=\"md-plain\">\u59d4\u6258\u93c8<\/span><\/strong><\/h5><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">delegate<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">TestDelegate<\/span>(<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">n<\/span>);<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">Program<\/span><\/span><br \/><span role=\"presentation\">{ \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">Main<\/span>(<span class=\"cm-variable-3\">string<\/span>[] <span class=\"cm-variable\">args<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">TestDelegate<\/span> <span class=\"cm-variable\">d_Base<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-atom\">null<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">TestDelegate<\/span> <span class=\"cm-variable\">d1<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">TestDelegate<\/span>(<span class=\"cm-variable\">cm<\/span>.<span class=\"cm-variable\">TestMethod_A<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">TestDelegate<\/span> <span class=\"cm-variable\">d2<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">TestDelegate<\/span>(<span class=\"cm-variable\">cm<\/span>.<span class=\"cm-variable\">TestMethod_B<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">TestDelegate<\/span> <span class=\"cm-variable\">d3<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">TestDelegate<\/span>(<span class=\"cm-variable\">cm<\/span>.<span class=\"cm-variable\">TestMethod_C<\/span>);<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">d_Base<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable\">TestDelegate<\/span>)<span class=\"cm-variable\">Delegate<\/span>.<span class=\"cm-variable\">Combine<\/span>(<span class=\"cm-variable\">d_Base<\/span>, <span class=\"cm-variable\">d1<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">d_Base<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable\">TestDelegate<\/span>)<span class=\"cm-variable\">Delegate<\/span>.<span class=\"cm-variable\">Combine<\/span>(<span class=\"cm-variable\">d_Base<\/span>, <span class=\"cm-variable\">d2<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">d_Base<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable\">TestDelegate<\/span>)<span class=\"cm-variable\">Delegate<\/span>.<span class=\"cm-variable\">Combine<\/span>(<span class=\"cm-variable\">d_Base<\/span>, <span class=\"cm-variable\">d3<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0  } \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u9996\u6b21\u57f7\u884cCombine\u6642\uff1a<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-variable\">d_Base<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable\">TestDelegate<\/span>)<span class=\"cm-variable\">Delegate<\/span>.<span class=\"cm-variable\">Combine<\/span>(<span class=\"cm-variable\">d_Base<\/span>, <span class=\"cm-variable\">d1<\/span>);<\/span><\/pre><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">Combine\u65b9\u6cd5\u767c\u73fe\u8a66\u5716\u5408\u4f75null\u548cd1\uff0c\u76f4\u63a5\u8fd4\u56ded1\u7684\u5f15\u7528\u5c0d\u8c61<\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u518d\u6b21\u57f7\u884cCombine\u6642\uff1a<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-variable\">d_Base<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable\">TestDelegate<\/span>)<span class=\"cm-variable\">Delegate<\/span>.<span class=\"cm-variable\">Combine<\/span>(<span class=\"cm-variable\">d_Base<\/span>, <span class=\"cm-variable\">d2<\/span>);<\/span><\/pre><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">Combine\u65b9\u6cd5\u767c\u73fed_Base\u5df2\u5f15\u7528\u4e86\u4e00\u500b\u59d4\u6258\u5c0d\u8c61\uff08d1\uff09\uff0cCombine\u6703\u69cb\u9020\u4e00\u500b\u65b0\u7684\u59d4\u6258\u5c0d\u8c61<\/span><\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u521d\u59cb\u5316\u5176\u79c1\u6709\u5b57\u6bb5\uff08\u5177\u9ad4\u7684\u503c\u4e0d\u91cd\u8981\uff09<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u91cd\u8981\u7684\u662f<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">_invocationList\u6703\u88ab\u521d\u59cb\u5316\u70ba\u5f15\u7528\u4e00\u500b\u300c\u59d4\u6258\u5c0d\u8c61\u6578\u7d44\u300d<\/span><\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u7b2c\u4e00\u500b\u5143\u7d20\u88ab\u521d\u59cb\u5316\u70ba\u5f15\u7528\u5305\u88dd\u4e86TestMethod_A\u65b9\u6cd5\u7684\u59d4\u6258<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u7b2c\u4e8c\u500b\u5143\u7d20\u88ab\u521d\u59cb\u5316\u70ba\u5f15\u7528\u5305\u88dd\u4e86TestMethod_B\u65b9\u6cd5\u7684\u59d4\u6258<\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">d_Base\u88ab\u8a2d\u70ba<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u5f15\u7528\u65b0\u5efa\u7684\u59d4\u6258\u5c0d\u8c61<\/span><\/span><\/span><\/p><\/li><\/ul><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u6700\u5f8c\u4e00\u6b21\u57f7\u884cCombine\u6642\uff1a<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-variable\">d_Base<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable\">TestDelegate<\/span>)<span class=\"cm-variable\">Delegate<\/span>.<span class=\"cm-variable\">Combine<\/span>(<span class=\"cm-variable\">d_Base<\/span>, <span class=\"cm-variable\">d3<\/span>);<\/span><\/pre><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u518d\u6b21\u57f7\u884c\u4e0a\u9762\u7b2c\u4e8c\u6b21\u57f7\u884cCombine\u7684\u6d41\u7a0b<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u518d\u65b0\u589e\u4e00\u500b\u59d4\u6258\u5c0d\u8c61\u4e26\u88abd_Base\u6240\u5f15\u7528\uff0cd_Base\u7684_invocationList\u5f15\u7528\u4e00\u500b\u5305\u542b\u4e86TestMethod_A\/B\/C\u7684\u59d4\u6258\u5c0d\u8c61\u6578\u7d44<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u4e4b\u524d\u65b0\u589e\u7684\u59d4\u6258\u548c_invocationList\uff08\u5305\u542bTestMethodA\/B\uff09\u5c07\u6703\u9032\u884cGC<\/span><\/p><\/li><\/ul><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u793a\u610f\u5716\uff1a<\/span><\/p><\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-67d4572 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"67d4572\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5324f4f\" data-id=\"5324f4f\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ab741a0 elementor-widget elementor-widget-image\" data-id=\"ab741a0\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"624\" src=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/03\/CLR_17_3.png\" class=\"attachment-large size-large wp-image-2250\" alt=\"\" srcset=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/03\/CLR_17_3.png 975w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/03\/CLR_17_3-300x192.png 300w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/03\/CLR_17_3-768x492.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-0c50e69 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"0c50e69\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c62728c\" data-id=\"c62728c\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9065a46 elementor-widget elementor-widget-text-editor\" data-id=\"9065a46\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item md-focus-container\"><p class=\"md-end-block md-p md-focus\"><span class=\"md-plain md-expand\">\u59d4\u6258\u93c8\u7684\u8abf\u7528<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">Program<\/span><\/span><br \/><span role=\"presentation\">{ \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">Main<\/span>(<span class=\"cm-variable-3\">string<\/span>[] <span class=\"cm-variable\">args<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">d_Base<\/span>(<span class=\"cm-number\">30<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0  } \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">CallBackMethods<\/span><\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">TestMethod_A<\/span>(<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">n<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-variable\">$<\/span><span class=\"cm-string\">\"A: {n}\"<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">TestMethod_B<\/span>(<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">n<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-variable\">$<\/span><span class=\"cm-string\">\"B: {n}\"<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">TestMethod_C<\/span>(<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">n<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-variable\">$<\/span><span class=\"cm-string\">\"C: {n}\"<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">Output\uff1a<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"\" spellcheck=\"false\"><span role=\"presentation\">A: 30<\/span><br \/><span role=\"presentation\">B: 30<\/span><br \/><span role=\"presentation\">C: 30<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5728d_Base\u5f15\u7528\u7684\u59d4\u6258\u4e0a\u8abf\u7528Invoke\u6642\uff0c\u6703\u767c\u73fe\u79c1\u6709\u5b57\u6bb5<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">_invocationList != null<\/span><\/span><\/span><span class=\"md-plain\">\uff0c\u4e26\u57f7\u884c\u4e00\u500b\u5faa\u74b0\u904d\u6b77\u6578\u7d44\u4e2d\u7684\u6240\u6709\u5143\u7d20\uff0c<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u4f9d\u6b21\u8abf\u7528\u6bcf\u500b\u5143\u7d20\u5305\u88dd\u7684\u65b9\u6cd5<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5982\u679c\u5305\u88dd\u7684\u65b9\u6cd5\u6709\u8fd4\u56de\u503c\uff0c\u53ef\u4ee5\u5728\u8abf\u7528\u59d4\u6258\u6642\u63a5\u6536\u5176\u8fd4\u56de\u503c\uff0c\u4f46<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u53ea\u6703\u63a5\u6536\u5230\u59d4\u6258\u93c8\u4e2d\u6700\u5f8c\u4e00\u500b\u59d4\u6258\u5c0d\u8c61\u7684\u8fd4\u56de\u503c<\/span><\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">delegate<\/span> <span class=\"cm-variable-3\">int<\/span> <span class=\"cm-def\">TestRetDelegate<\/span>(<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">n<\/span>);<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">Main<\/span>(<span class=\"cm-variable-3\">string<\/span>[] <span class=\"cm-variable\">args<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">TestRetDelegate<\/span> <span class=\"cm-variable\">retD_Base<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-atom\">null<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">TestRetDelegate<\/span> <span class=\"cm-variable\">retD1<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">TestRetDelegate<\/span>(<span class=\"cm-variable\">cm<\/span>.<span class=\"cm-variable\">TestRetMethod_A<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">TestRetDelegate<\/span> <span class=\"cm-variable\">retD2<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">TestRetDelegate<\/span>(<span class=\"cm-variable\">cm<\/span>.<span class=\"cm-variable\">TestRetMethod_B<\/span>);<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">retD_Base<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable\">TestRetDelegate<\/span>)<span class=\"cm-variable\">Delegate<\/span>.<span class=\"cm-variable\">Combine<\/span>(<span class=\"cm-variable\">retD_Base<\/span>, <span class=\"cm-variable\">retD1<\/span>); \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">retD_Base<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable\">TestRetDelegate<\/span>)<span class=\"cm-variable\">Delegate<\/span>.<span class=\"cm-variable\">Combine<\/span>(<span class=\"cm-variable\">retD_Base<\/span>, <span class=\"cm-variable\">retD2<\/span>);<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">result<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">retD_Base<\/span>(<span class=\"cm-number\">100<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-variable\">$<\/span><span class=\"cm-string\">\"Result: {result}\"<\/span>);<\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">CallBackMethods<\/span><\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">TestRetMethod_A<\/span>(<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">n<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-variable\">$<\/span><span class=\"cm-string\">\"Ret A: {n}\"<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">n<\/span> <span class=\"cm-operator\">*<\/span> <span class=\"cm-number\">100<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">TestRetMethod_B<\/span>(<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">n<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-variable\">$<\/span><span class=\"cm-string\">\"Ret B: {n}\"<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">n<\/span> <span class=\"cm-operator\">\/<\/span> <span class=\"cm-number\">2<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5728\u8a72\u4f8b\u5b50\u4e2d\uff0c\u59d4\u6258\u93c8\u5148\u8abf\u7528TestRetMethod_A\uff0c\u518d\u8abf\u7528TestRetMethod_B\uff0c\u5404\u50b3\u905e\uff08100\uff09\u4f5c\u70ba\u5be6\u53c3<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">TestRetMethod_A\u6309\u7406\u8fd4\u56de10000<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">TestRetMethod_B\u6309\u7406\u8fd4\u56de50<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u6700\u5f8cresult\u7684\u8f38\u51fa\u70ba50\uff0c\u4e5f\u5c31\u662fTestRetMethod_B\u7684\u8fd4\u56de\u503c<\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5982\u679c\u9700\u8981\u7372\u53d6\u66f4\u591a\u7684\u63a7\u5236\uff0c\u53ef\u4ee5\u4f7f\u7528MulticastDelegate\u63d0\u4f9b\u7684\u5be6\u4f8b\u65b9\u6cd5\uff1a<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">GetInvocationList\uff0c\u986f\u5f0f\u8abf\u7528\u93c8\u4e2d\u7684\u6bcf\u4e00\u500b\u59d4\u6258<\/span><\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">GetInvocationList\u5167\u90e8\u91cd\u65b0\u69cb\u9020\u4e86\u4e00\u500b\u6578\u7d44\uff0c\u5143\u7d20\u4f9d\u6b21\u6307\u5411_invocationList\u7684\u6bcf\u500b\u59d4\u6258\uff0c\u4e26\u8fd4\u56de\u8a72\u6578\u7d44\u7684\u5f15\u7528<\/span><\/p><\/li><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-variable\">Delegate<\/span>[] <span class=\"cm-variable\">retDs<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">retD_Base<\/span>.<span class=\"cm-variable\">GetInvocationList<\/span>();<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable-3\">object<\/span> <span class=\"cm-variable\">result_A<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">retDs<\/span>[<span class=\"cm-number\">0<\/span>].<span class=\"cm-variable\">Method<\/span>.<span class=\"cm-variable\">Invoke<\/span>(<span class=\"cm-variable\">cm<\/span>, <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable-3\">object<\/span>[] { <span class=\"cm-number\">100<\/span> });<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-variable\">$<\/span><span class=\"cm-string\">\"Result_A: {result_A}\"<\/span>); <span class=\"cm-comment\">\/\/Output: 10000<\/span><\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable-3\">object<\/span> <span class=\"cm-variable\">result_B<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">retDs<\/span>[<span class=\"cm-number\">1<\/span>].<span class=\"cm-variable\">DynamicInvoke<\/span>(<span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable-3\">object<\/span>[] { <span class=\"cm-number\">100<\/span> });<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-variable\">$<\/span><span class=\"cm-string\">\"Result_B: {result_B}\"<\/span>); <span class=\"cm-comment\">\/\/Output: 50<\/span><\/span><\/pre><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u79fb\u9664\u59d4\u6258<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-variable\">d_Base<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable\">TestDelegate<\/span>)<span class=\"cm-variable\">Delegate<\/span>.<span class=\"cm-variable\">Remove<\/span>(<span class=\"cm-variable\">d_Base<\/span>, <span class=\"cm-variable\">d1<\/span>);<\/span><\/pre><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">Remove\u88ab\u8abf\u7528\u6642\uff0c\u6703\u6383\u7784\u7b2c\u4e00\u500b\u5be6\u53c3\uff08d_Base\uff09\u6240\u5f15\u7528\u7684\u59d4\u6258\u5167\u90e8\u7684_invocationList<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5728\u88e1\u9762<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u67e5\u627e _target\u5b57\u6bb5\u548c _methodPtr\u5b57\u6bb5\u8207\u7b2c\u4e8c\u500b\u53c3\u6578\u5339\u914d\u7684\u59d4\u6258\uff0c\u627e\u5230\u5247\u79fb\u9664<\/span><\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u79fb\u9664\u5f8c<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u5269\u9918\u4e00\u500b<\/span><\/span><\/span><span class=\"md-plain\">\u6578\u64da\u9805\uff0cd_Base\u5f15\u7528<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u76f4\u63a5\u6307\u5411\u8a72\u5269\u9918\u7684\u59d4\u6258\u5c0d\u8c61<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u79fb\u9664\u5f8c<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u5269\u9918\u591a\u500b<\/span><\/span><\/span><span class=\"md-plain\">\u6578\u64da\u9805\uff0c<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u65b0\u5efa\u4e00\u500b\u4e0d\u5305\u542b\u79fb\u9664\u5c0d\u8c61\u59d4\u6258\u7684_invocationList\u7684\u59d4\u6258\u5c0d\u8c61\uff0c\u4e26\u8b93d_Base\u5f15\u7528\u8a72\u65b0\u5c0d\u8c61<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u79fb\u9664\u5f8c<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u5269\u9918\u96f6\u500b<\/span><\/span><\/span><span class=\"md-plain\">\u6578\u64da\u9805\uff0c<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u8fd4\u56denull<\/span><\/span><\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item md-focus-container\"><p class=\"md-end-block md-p md-focus\"><span class=\"md-plain\">\u5982\u679c\u6709\u591a\u65bc\u4e00\u500b\u5339\u914d\u9805\uff0c<\/span><span class=\"md-html-inline md-expand\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u6bcf\u6b21Remove\u53ea\u6703\u79fb\u96641\u500b\u5339\u914d\u9805<\/span><\/span><\/span><\/p><\/li><\/ul><\/li><\/ul><\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-72c8678 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"72c8678\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-75b359f\" data-id=\"75b359f\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0753de6 elementor-widget elementor-widget-text-editor\" data-id=\"0753de6\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<h5 class=\"md-end-block md-heading\"><strong><span class=\"md-plain\">\u59d4\u6258\u8207<\/span><\/strong><a href=\"https:\/\/lonelinerd.com\/index.php\/2023\/05\/30\/event\/\"><strong><span class=\"md-plain\">\u4e8b\u4ef6<\/span><\/strong><\/a><\/h5><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><b><span class=\"md-plain\">\u4e8b\u4ef6\u4e0d\u662f\u59d4\u6258\u985e\u578b\u7684\u5b57\u6bb5<\/span><\/b><\/span><\/span><span class=\"md-plain\" style=\"font-size: 16px;\">\uff0c\u66f4\u50cf\u662f\u4e00\u500b\u59d4\u6258\u985e\u578b\u7684<\/span><span class=\"md-html-inline\" style=\"font-size: 16px;\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u5c6c\u6027<\/span><\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u6211\u5011\u5c0d\u4e8b\u4ef6\u7684\u64cd\u4f5c\u53ea\u6709 +=\/-=\u548c\u5c0d\u5176\u7684Invoke<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u56e0\u6b64\u4e8b\u4ef6\u66f4\u50cf\u5c0d\u59d4\u6258\u7684\u4e00\u7a2e\u4fdd\u8b77\u6a5f\u5236\uff0c\u70ba\u59d4\u6258\u63d0\u4f9b\u4e86\u4e00\u500b\u984d\u5916\u7684\u5c01\u88dd\u5c64<\/span><\/span><\/span><\/p><\/li><\/ul><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"c#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">using<\/span> <span class=\"cm-variable\">System<\/span>;<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">Test<\/span><\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">event<\/span> <span class=\"cm-variable\">EventHandler<\/span> <span class=\"cm-variable\">MyEvent<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u7576\u6211\u5011\u5728\u4f7f\u7528 +=\/-=\u6642\uff0c\u5be6\u969b\u4e0a\u662f\u5728\u8abf\u7528 add \u548c remove\u65b9\u6cd5<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u6211\u5011\u6240\u80fd\u505a\u7684\u53ea\u6709\u300c\u8a02\u95b1\u300d\u548c\u300c\u53d6\u6d88\u8a02\u95b1\u300d<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">add<\/span> <span class=\"cm-comment\">\/\/+=<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span> (<span class=\"cm-string\">\"add operation\"<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">remove<\/span> <span class=\"cm-comment\">\/\/-=<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span> (<span class=\"cm-string\">\"remove operation\"<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0  } \u00a0 \u00a0 \u00a0 <\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">Main<\/span>()<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Test<\/span> <span class=\"cm-variable\">t<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">Test<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">t<\/span>.<span class=\"cm-variable\">MyEvent<\/span> <span class=\"cm-operator\">+=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">EventHandler<\/span> (<span class=\"cm-variable\">t<\/span>.<span class=\"cm-variable\">DoNothing<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">t<\/span>.<span class=\"cm-variable\">MyEvent<\/span> <span class=\"cm-operator\">-=<\/span> <span class=\"cm-atom\">null<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">DoNothing<\/span> (<span class=\"cm-variable-3\">object<\/span> <span class=\"cm-variable\">sender<\/span>, <span class=\"cm-variable\">EventArgs<\/span> <span class=\"cm-variable\">e<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u4e8b\u4ef6\u4e4b\u6240\u4ee5\u5bb9\u6613\u88ab\u4eba\u7576\u6210\u59d4\u6258\uff0c\u662f\u56e0\u70baC#\u63d0\u4f9b\u4e86\u4e00\u500b\u4e8b\u4ef6\u7684shortcut\uff0c\u5b57\u6bb5\u98a8\u683c\u7684\u8072\u660e\u65b9\u5f0f\u3002<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u5728\u5b57\u6bb5\u98a8\u683c\u7684\u4e8b\u4ef6\u8072\u660e\u4e2d\uff0c\u7de8\u8b6f\u5668\u6703\u5c07\u8072\u660e\u8f49\u63db\u6210\u4e00\u500b\u5177\u6709\u9ed8\u8a8dadd\/remove\u5be6\u73fe\u7684\u4e8b\u4ef6\u548c\u4e00\u500b\u79c1\u6709\u7684\u59d4\u6258\u985e\u578b\u7684\u5b57\u6bb5\u3002<\/span><\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u56e0\u6b64\uff0c\u985e\u5916\u7684\u4ee3\u78bc\u53ea\u80fd\u770b\u898b\u4e8b\u4ef6\u3002\u8868\u9762\u4e0a\u4f3c\u4e4e\u80fd\u8abf\u7528\u4e00\u500b\u4e8b\u4ef6\uff0c\u4f46\u5be6\u969b\u4e0a\u662f\u8abf\u7528\u5b58\u5132\u5728\u5b57\u6bb5\u4e2d\u7684\u59d4\u6258\u5be6\u4f8b\u3002<\/span><\/span><\/span><\/p><\/li><\/ul><\/li><\/ul><\/li><\/ul><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"c#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">event<\/span> <span class=\"cm-variable\">VarName<\/span> <span class=\"cm-variable\">MyEvent<\/span>; <span class=\"cm-comment\">\/\/\u4e8b\u4ef6<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">delegate<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">VarName<\/span>(<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">input<\/span>); <span class=\"cm-comment\">\/\/\u59d4\u6258<\/span><\/span><\/pre>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-cd0f9a9 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"cd0f9a9\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7b255a4\" data-id=\"7b255a4\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9b4d7ba elementor-widget elementor-widget-text-editor\" data-id=\"9b4d7ba\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<h5 class=\"md-end-block md-heading\"><strong><span class=\"md-plain\">\u59d4\u6258<\/span><\/strong><strong><span class=\"md-plain\">\u8207<\/span><\/strong><strong><span class=\"md-plain\">Lambda\u8868\u9054\u5f0f<\/span><\/strong><\/h5><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span class=\"md-plain\">\u8868\u9054\u5f0f\u7684\u985e\u578b\u5e76\u975e\u59d4\u6258\u985e\u578b\uff0c\u4f46\u5b83\u53ef\u4ee5\u901a\u904e\u96b1\u5f0f\/\u986f\u5f0f\u8f49\u63db\u6210\u4e00\u500b\u59d4\u6258\u5be6\u4f8b<\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u533f\u540d\u51fd\u6578 = \u533f\u540d\u65b9\u6cd5 + Lambda\u8868\u9054\u5f0f<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5169\u8005\u5728\u5f88\u591a\u60c5\u6cc1\u4e0b\u53ef\u4ee5\u4f7f\u7528\u76f8\u540c\u7684\u8f49\u63db\u898f\u5247<\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">Func&lt;T1-16, TResult&gt;<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">T1-16\uff1a\u53ef\u737216\u7684\u985e\u578b\u53c3\u6578<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">TResult\uff1a\u8fd4\u56de\u985e\u578b\u53c3\u6578<\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u4f7f\u7528 =&gt; \u64cd\u4f5c\u7b26\uff0c\u544a\u8a34\u7de8\u8b6f\u5668\u6211\u5011\u6b63\u4f7f\u7528\u4e00\u500bLambda\u8868\u9054\u5f0f<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"c#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-variable-3\">Func<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable-3\">string<\/span>, <span class=\"cm-variable-3\">int<\/span><span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">returnLength<\/span>;<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">returnLength<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">text<\/span>) <span class=\"cm-operator\">=&gt;<\/span> { <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">text<\/span>.<span class=\"cm-variable\">Length<\/span>; }<\/span><br \/><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u55ae\u4e00\u8868\u9054\u5f0f\u4f5c\u70ba\u4e3b\u9ad4<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u8a72\u8868\u9054\u5f0f\u7684\u503c\u662fLambda\u7684\u7d50\u679c<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u53ea\u6307\u5b9a\u8868\u9054\u5f0f\uff0c\u4e0d\u4f7f\u7528\u5927\u62ec\u865f\uff0c\u4e0d\u4f7f\u7528return\u8a9e\u53e5\uff0c\u4e5f\u4e0d\u6dfb\u52a0\u5206\u865f<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">returnLength<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">text<\/span>) <span class=\"cm-operator\">=&gt;<\/span> <span class=\"cm-variable\">text<\/span>.<span class=\"cm-variable\">Length<\/span>;<\/span><br \/><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u96b1\u5f0f\u985e\u578b\u7684\u53c3\u6578\u5217\u8868<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u7531\u7de8\u8b6f\u5668\u53bb\u63a8\u65b7\uff0c\u4e0d\u9700\u8981\u986f\u5f0f\u8072\u660e\uff08\u6574\u500b\u5217\u8868\u5c31\u662f\u986f\u5f0f\/\u96b1\u5f0f\uff09<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u5982\u679c\u6709out\/ref\u53c3\u6578\uff0c\u5c31\u5fc5\u9808\u4f7f\u7528\u986f\u5f0f\u985e\u578b<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">returnLength<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable\">text<\/span>) <span class=\"cm-operator\">=&gt;<\/span> <span class=\"cm-variable\">text<\/span>.<span class=\"cm-variable\">Length<\/span>;<\/span><br \/><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u55ae\u4e00\u53c3\u6578<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u5982\u679c\u53ea\u9700\u8981\u4e00\u500b\u53c3\u6578\uff0c\u53ef\u4ee5\u7701\u7565\u62ec\u865f<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">returnLength<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">text<\/span> <span class=\"cm-operator\">=&gt;<\/span> <span class=\"cm-variable\">text<\/span>.<span class=\"cm-variable\">Length<\/span>;<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span class=\"md-plain\">\u9ad8\u968e\uff08High-order\uff09\u51fd\u6578<\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span class=\"md-plain\">Lambda\u8868\u9054\u5f0f\u7684\u4e3b\u9ad4\u672c\u8eab\u5305\u542b\u53e6\u4e00\u500bLambda\u8868\u9054\u5f0f<\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span class=\"md-plain\">Lambda\u8868\u9054\u5f0f\u7684\u53c3\u6578\u662f\u53e6\u4e00\u500b\u59d4\u6258<\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5982\uff1aList<\/span><span class=\"md-plain\">\u7684\u904e\u6ffe\/\u6392\u5e8f\/\u64cd\u4f5c<\/span><\/p><\/li><\/ul><\/li><\/ul><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"c#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-comment\">\/\/C# Code<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">Film<\/span><\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">Name<\/span> { <span class=\"cm-keyword\">get<\/span>; <span class=\"cm-keyword\">set<\/span>; }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">Year<\/span> { <span class=\"cm-keyword\">get<\/span>; <span class=\"cm-keyword\">set<\/span>; }<\/span><br \/><span role=\"presentation\">}<\/span><br \/><br \/><span role=\"presentation\"><span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">Main<\/span>()<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">var<\/span> <span class=\"cm-def\">films<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">List<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">Film<\/span><span class=\"cm-operator\">&gt;<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">Film<\/span>{ <span class=\"cm-variable\">Name<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-string\">\"The Wizard of Oz\"<\/span>, <span class=\"cm-variable\">Year<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">1939<\/span> },<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">Film<\/span>{ <span class=\"cm-variable\">Name<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-string\">\"Jaws\"<\/span>, <span class=\"cm-variable\">Year<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">1975<\/span> },<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">Film<\/span>{ <span class=\"cm-variable\">Name<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-string\">\"Singing in the Rain\"<\/span>, <span class=\"cm-variable\">Year<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">1952<\/span> },<\/span><br \/><span role=\"presentation\"> \u00a0  };<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable-3\">Action<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">Film<\/span><span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">print<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">film<\/span> <span class=\"cm-operator\">=&gt;<\/span> <span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-variable\">$<\/span><span class=\"cm-string\">\"Name={film.Name}, Year={film.Year}\"<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">films<\/span>.<span class=\"cm-variable\">ForEach<\/span>(<span class=\"cm-variable\">print<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">films<\/span>.<span class=\"cm-variable\">FindAll<\/span>(<span class=\"cm-variable\">film<\/span> <span class=\"cm-operator\">=&gt;<\/span> <span class=\"cm-variable\">film<\/span>.<span class=\"cm-variable\">Year<\/span> <span class=\"cm-operator\">&lt;<\/span> <span class=\"cm-number\">1960<\/span>).<span class=\"cm-variable\">ForEach<\/span>(<span class=\"cm-variable\">print<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">films<\/span>.<span class=\"cm-variable\">Sort<\/span>((<span class=\"cm-variable\">f1<\/span>, <span class=\"cm-variable\">f2<\/span>) <span class=\"cm-operator\">=&gt;<\/span> <span class=\"cm-variable\">f1<\/span>.<span class=\"cm-variable\">Name<\/span>.<span class=\"cm-variable\">CompareTo<\/span>(<span class=\"cm-variable\">f2<\/span>.<span class=\"cm-variable\">Name<\/span>));<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">films<\/span>.<span class=\"cm-variable\">ForEach<\/span>(<span class=\"cm-variable\">print<\/span>); \u00a0 \u00a0<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u7de8\u8b6f\u5668\u770b\u5230lambda\u8868\u9054\u5f0f\uff0c\u6703\u81ea\u52d5\u70ba\u5176\u5275\u5efa\u4e00\u500b\u533f\u540d\u51fd\u6578\u548c\u59d4\u6258\u985e\u578b\u8b8a\u91cf<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">Main<\/span>(<span class=\"cm-variable-3\">string<\/span>[] <span class=\"cm-variable\">args<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">LambdaTest<\/span>(<span class=\"cm-variable\">obj<\/span> <span class=\"cm-operator\">=&gt;<\/span> <span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-variable\">obj<\/span>), <span class=\"cm-number\">50<\/span>);<\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">LambdaTest<\/span>(<span class=\"cm-variable\">TestDelegate<\/span> <span class=\"cm-variable\">d<\/span>, <span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">n<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">d<\/span><span class=\"cm-operator\">?<\/span>.<span class=\"cm-variable\">Invoke<\/span>(<span class=\"cm-variable\">n<\/span>);<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u65b9\u6cd5\u540d\u5b57\u7684\u751f\u6210\u4e0d\u662f\u56fa\u5b9a\u7684\uff0c\u672c\u6b21\u751f\u6210\u70ba&#8221;&lt;&gt;c&#8221;<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u59d4\u6258\u985e\u578b\u8b8a\u91cf\u540d\u5b57\u7684\u751f\u6210\u4e5f\u4e0d\u662f\u56fa\u5b9a\u7684\uff0c\u672c\u6b21\u751f\u6210\u70ba&#8221;&lt;&gt;9__0_0&#8243;<\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u4ee3\u78bc\u5927\u6982\u6703\u88ab\u7de8\u8b6f\u6210\u9019\u500b\u6a23\u5b50<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\">[<span class=\"cm-variable\">CompilerGenerated<\/span>]<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">private<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable\">TestDelegate<\/span> <span class=\"cm-operator\">&lt;&gt;<\/span><span class=\"cm-number\">9<\/span><span class=\"cm-variable\">__0_0<\/span>; <span class=\"cm-comment\">\/\/\u81ea\u52d5\u751f\u6210\u7684\u59d4\u6258\u985e\u578b\u540d<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">Main<\/span>(<span class=\"cm-variable-3\">string<\/span>[] <span class=\"cm-variable\">args<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-operator\">&lt;&gt;<\/span><span class=\"cm-number\">9<\/span><span class=\"cm-variable\">__0_0<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-atom\">null<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-operator\">&lt;&gt;<\/span><span class=\"cm-number\">9<\/span><span class=\"cm-variable\">__0_0<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">TestDelegate<\/span>(<span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">Main<\/span><span class=\"cm-operator\">&gt;<\/span><span class=\"cm-variable\">b__0_0<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">LambdaTest<\/span>(<span class=\"cm-operator\">&lt;&gt;<\/span><span class=\"cm-number\">9<\/span><span class=\"cm-variable\">__0_0<\/span>, <span class=\"cm-number\">50<\/span>);<\/span><br \/><span role=\"presentation\">}<br \/><br \/><\/span><span role=\"presentation\">[<span class=\"cm-variable\">CompilerGenerated<\/span>]<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">private<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">Main<\/span><span class=\"cm-operator\">&gt;<\/span><span class=\"cm-def\">b__0_0<\/span>(<span class=\"cm-variable-3\">Object<\/span> <span class=\"cm-variable\">obj<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-variable\">obj<\/span>);<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u53e6\u5916\uff0c\u5982\u679cLambda\u8868\u9054\u5f0f\u4e2d<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u4f7f\u7528\u5230\u4e86\u4e00\u4e9b\u5c40\u90e8\u8b8a\u91cf<\/span><\/span><\/span><span class=\"md-plain\">\u7684\u8a71\uff0cC#\u4e5f\u6703\u70ba\u6211\u5011\u5b8c\u6210\u4e00\u4e9b\u8907\u96dc\u7684\u904e\u7a0b<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">n<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">50<\/span>;<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">Main<\/span>(<span class=\"cm-variable-3\">string<\/span>[] <span class=\"cm-variable\">args<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">LambdaTest<\/span>(<span class=\"cm-variable\">obj<\/span> <span class=\"cm-operator\">=&gt;<\/span> <span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-variable\">obj<\/span>), <span class=\"cm-variable\">n<\/span>);<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">C#\u6703\u5b9a\u7fa9\u4e00\u500b<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u8f14\u52a9\u985e<\/span><\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u8a72\u985e\u70ba\u6253\u7b97\u50b3\u7d66\u56de\u8abf\u4ee3\u78bc\u7684\u6bcf\u500b\u503c\u90fd\u5b9a\u7fa9\u4e00\u500b\u5b57\u6bb5<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u56de\u8abf\u4ee3\u78bc\u6703\u5b9a\u7fa9\u6210\u8f14\u52a9\u985e\u4e2d\u7684\u5be6\u4f8b\u65b9\u6cd5<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u69cb\u9020\u8f14\u52a9\u985e\u7684\u5be6\u4f8b\uff0c\u7528\u5c40\u90e8\u8b8a\u91cf\u7684\u503c\u4f86\u521d\u59cb\u5316\u8f14\u52a9\u985e\u88e1\u7684\u5b57\u6bb5<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u6700\u5f8c\u69cb\u9020\u7d81\u5b9a\u5230\u8f14\u52a9\u5c0d\u8c61\/\u5be6\u4f8b\u7684\u59d4\u6258\u5c0d\u8c61<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u793a\u4f8b\uff1a<\/span><\/p><\/li><\/ul><\/li><\/ul><\/li><\/ul><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-comment\">\/\/Origin CSharp<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">internal<\/span> <span class=\"cm-keyword\">sealed<\/span> <span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">AClass<\/span><\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">UsingLocalVariableInTheCallbackCode<\/span>(<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">numToDo<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">int<\/span>[] <span class=\"cm-variable\">squares<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable-3\">int<\/span>[<span class=\"cm-variable\">numToDo<\/span>];<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">AutoResetEvent<\/span> <span class=\"cm-variable\">done<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">AutoResetEvent<\/span>(<span class=\"cm-atom\">false<\/span>);<br \/><br \/><\/span><span role=\"presentation\"><span class=\"cm-keyword\">        for<\/span> (<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">n<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">0<\/span>; <span class=\"cm-variable\">n<\/span> <span class=\"cm-operator\">&lt;<\/span> <span class=\"cm-variable\">squares<\/span>.<span class=\"cm-variable\">Length<\/span>; <span class=\"cm-variable\">n<\/span><span class=\"cm-operator\">++<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">ThreadPool<\/span>.<span class=\"cm-variable\">QueueUserWorkItem<\/span>(<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">obj<\/span> <span class=\"cm-operator\">=&gt;<\/span> {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">num<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable-3\">int<\/span>)<span class=\"cm-variable\">obj<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">squares<\/span>[<span class=\"cm-variable\">num<\/span>] <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">num<\/span> <span class=\"cm-operator\">*<\/span> <span class=\"cm-variable\">num<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">Interlocked<\/span>.<span class=\"cm-variable\">Decrement<\/span>(<span class=\"cm-keyword\">ref<\/span> <span class=\"cm-variable\">numToDo<\/span>) <span class=\"cm-operator\">==<\/span> <span class=\"cm-number\">0<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">done<\/span>.<span class=\"cm-variable\">Set<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  }, <span class=\"cm-variable\">n<\/span>); \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<br \/><br \/><\/span><span role=\"presentation\"><span class=\"cm-variable\">        done<\/span>.<span class=\"cm-variable\">WaitOne<\/span>();<br \/><\/span><span role=\"presentation\"><span class=\"cm-keyword\">  <br \/>        for<\/span> (<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">n<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">0<\/span>; <span class=\"cm-variable\">n<\/span> <span class=\"cm-operator\">&lt;<\/span> <span class=\"cm-variable\">squares<\/span>.<span class=\"cm-variable\">Length<\/span>; <span class=\"cm-variable\">n<\/span><span class=\"cm-operator\">++<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-variable\">$<\/span><span class=\"cm-string\">\"Index :{n}, Square={squares[n]}\"<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0  } \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-comment\">\/\/Rewrite By CSharp<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">internal<\/span> <span class=\"cm-keyword\">sealed<\/span> <span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">AClass<\/span><\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">UsingLocalVariableInTheCallbackCode<\/span>(<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">numToDo<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/Auto Added<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">WaitCallback<\/span> <span class=\"cm-variable\">callback1<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-atom\">null<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/Support Class Instance<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-operator\">&lt;&gt;<\/span><span class=\"cm-variable\">c_DisplayClass2<\/span> <span class=\"cm-variable\">class1<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-operator\">&lt;&gt;<\/span><span class=\"cm-variable\">c_DisplayClass2<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/Init Support class fields<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">class1<\/span>.<span class=\"cm-variable\">numToDo<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">numToDo<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">class1<\/span>.<span class=\"cm-variable\">squares<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable-3\">int<\/span>[<span class=\"cm-variable\">class1<\/span>.<span class=\"cm-variable\">numToDo<\/span>];<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">class1<\/span>.<span class=\"cm-variable\">done<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">AutoResetEvent<\/span>(<span class=\"cm-atom\">false<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">for<\/span>(<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">n<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">0<\/span>; <span class=\"cm-variable\">n<\/span> <span class=\"cm-operator\">&lt;<\/span> <span class=\"cm-variable\">class1<\/span>.<span class=\"cm-variable\">squares<\/span>.<span class=\"cm-variable\">Length<\/span>; <span class=\"cm-variable\">n<\/span><span class=\"cm-operator\">++<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">callback1<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-atom\">null<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u65b0\u5efa\u7684\u59d4\u6258\u5c0d\u8c61\u7d81\u5b9a\u5230\u8f14\u52a9\u5c0d\u8c61\u53ca\u5176\u533f\u540d\u5be6\u4f8b\u65b9\u6cd5<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">callback1<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">WaitCallback<\/span>(<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0      <span class=\"cm-variable\">class1<\/span>.<span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">UsingLocalVariablesInTheCallbackCode<\/span><span class=\"cm-operator\">&gt;<\/span><span class=\"cm-variable\">b__0<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">ThreadPool<\/span>.<span class=\"cm-variable\">QueueUserWorkItem<\/span>(<span class=\"cm-variable\">callback1<\/span>, <span class=\"cm-variable\">n<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<br \/><br \/><\/span><span role=\"presentation\">        <span class=\"cm-variable\">class1<\/span>.<span class=\"cm-variable\">done<\/span>.<span class=\"cm-variable\">WaitOne<\/span>();<br \/><br \/><\/span><span role=\"presentation\"><span class=\"cm-keyword\">        for<\/span> (<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">n<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">0<\/span>; <span class=\"cm-variable\">n<\/span> <span class=\"cm-operator\">&lt;<\/span> <span class=\"cm-variable\">class1<\/span>.<span class=\"cm-variable\">squares<\/span>.<span class=\"cm-variable\">Length<\/span>; <span class=\"cm-variable\">n<\/span><span class=\"cm-operator\">++<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-variable\">$<\/span><span class=\"cm-string\">\"Index :{n}, Square={class1.squares[n]}\"<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0  } \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\">}<br \/><br \/><\/span><span role=\"presentation\"><span class=\"cm-comment\">\/\/Support Class<\/span><\/span><br \/><span role=\"presentation\">[<span class=\"cm-variable\">CompileGenerated<\/span>]<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">private<\/span> <span class=\"cm-keyword\">sealed<\/span> <span class=\"cm-keyword\">class<\/span> <span class=\"cm-operator\">&lt;&gt;<\/span><span class=\"cm-variable\">c_DisplayClass2<\/span>:<span class=\"cm-variable-3\">Object<\/span>{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable-3\">int<\/span>[] <span class=\"cm-variable\">squares<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">numToDo<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable\">AutoResetEvent<\/span> <span class=\"cm-variable\">done<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-operator\">&lt;&gt;<\/span><span class=\"cm-variable\">c_DisplayClass2<\/span> { }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">UsingLocalVariablesInTheCallbackCode<\/span><span class=\"cm-operator\">&gt;<\/span><span class=\"cm-variable\">b__0<\/span>(<span class=\"cm-variable-3\">Object<\/span> <span class=\"cm-variable\">obj<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">num<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable-3\">int<\/span>)<span class=\"cm-variable\">obj<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">squares<\/span>[<span class=\"cm-variable\">num<\/span>] <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">num<\/span> <span class=\"cm-operator\">*<\/span> <span class=\"cm-variable\">num<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">Interlocked<\/span>.<span class=\"cm-variable\">Decrement<\/span>(<span class=\"cm-keyword\">ref<\/span> <span class=\"cm-variable\">numToDo<\/span>) <span class=\"cm-operator\">==<\/span> <span class=\"cm-number\">0<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">done<\/span>.<span class=\"cm-variable\">Set<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><div class=\"md-hr md-end-block\" tabindex=\"-1\"><ul><li><p class=\"md-end-block md-p md-focus\"><span class=\"md-html-inline md-expand\" spellcheck=\"false\"><span class=\"md-plain\">\u7121\u8ad6\u662f\u628aLambda\u8868\u9054\u5f0f\u7576\u4f5c\u65b9\u6cd5\u5be6\u53c3\u9084\u662f\u8ce6\u7d66\u59d4\u6258\u5be6\u4f8b\uff0c\u7de8\u8b6f\u5668\u90fd\u6703\u70baLambda\u8868\u9054\u5f0f\u5275\u5efa\u4e00\u500b\u65b9\u6cd5<\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u56e0\u70ba\u7de8\u8b6f\u5668\u77e5\u9053\u4ee5\u5f8c\u5982\u679c\u4ee3\u78bc\u518d\u6b21\u88ab\u8abf\u7528\uff0c\u53ef\u4ee5\u91cd\u7528\u59d4\u6258\u5be6\u4f8b\uff0c\u6240\u4ee5\u6703\u628a\u5b83\u7de9\u5b58\u4e0b\u4f86<\/span><\/p><\/li><\/ul><\/li><\/ul><\/div>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f56cf8d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f56cf8d\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-77743a3\" data-id=\"77743a3\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-85f96e0 elementor-widget elementor-widget-text-editor\" data-id=\"85f96e0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<h5 class=\"md-end-block md-heading md-focus\"><strong><span class=\"md-plain\">\u59d4\u6258\u8207\u53cd\u5c04<\/span><\/strong><\/h5><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u7de8\u8b6f\u6642\u5728\u5c0d\u59d4\u6258\u7684\u6240\u6709\u5fc5\u8981\u4fe1\u606f\u5b58\u5728\u672a\u77e5\u6642\u5275\u5efa\u59d4\u6258<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">System.Delegate.MethodInfo.<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">CreateDelegate<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u4f7f\u7528Delegate\u7684\u5be6\u4f8b\u65b9\u6cd5<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">DynamicInvoke<\/span><\/span><\/span><span class=\"md-plain\">\u9032\u884c\u8abf\u7528<\/span><\/p><\/li><\/ul><\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2d8b26d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2d8b26d\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-dbacba4\" data-id=\"dbacba4\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ecda9d7 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"ecda9d7\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-41899e0 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"41899e0\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-93dbc6c\" data-id=\"93dbc6c\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-41f1a2a elementor-widget elementor-widget-text-editor\" data-id=\"41f1a2a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<h4 class=\"md-end-block md-heading\"><span style=\"text-decoration: underline;\"><strong><span class=\"md-plain md-expand\">\u53c3\u8003\u66f8\u76ee<\/span><\/strong><\/span><\/h4><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item md-focus-container\">\u300aCLR via C#\u300b\uff08\u7b2c4\u7248\uff09 Jeffrey Richter<\/li><li>\u300a\u6df1\u5165\u7406\u89e3C#\u300b\uff08\u7b2c3\u7248\uff09 Jon Skeet<\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u5982\u679c\u6709\u4e00\u500b\u59d4\u6258\u7684\u8b8a\u91cf\uff0c\u53ef\u4ee5\u76f4\u63a5\u5c07\u5176\u8996\u70ba\u65b9\u6cd5\u672c\u8eab\uff0c\u59d4\u6258\u76f8\u7576\u65bc\u6307\u5b9a\u4e00\u4e9b\u4ee3\u78bc\u5728\u7279\u5b9a\u6642\u9593\u57f7\u884c<\/p>\n","protected":false},"author":1,"featured_media":947,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,27,18],"tags":[],"class_list":["post-3092","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-reading-notes","category-c-sharp","category-developing"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/03\/FeatureCover_ReadingNotes.png","_links":{"self":[{"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts\/3092","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/comments?post=3092"}],"version-history":[{"count":37,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts\/3092\/revisions"}],"predecessor-version":[{"id":4019,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts\/3092\/revisions\/4019"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/media\/947"}],"wp:attachment":[{"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/media?parent=3092"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/categories?post=3092"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/tags?post=3092"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}