{"id":53,"date":"2008-02-11T02:52:14","date_gmt":"2008-02-11T02:52:14","guid":{"rendered":""},"modified":"2008-02-11T02:52:14","modified_gmt":"2008-02-11T02:52:14","slug":"53","status":"publish","type":"post","link":"https:\/\/www.poloo.org\/?p=53","title":{"rendered":"C#\u4e2dDispose\u548cClose\u7684\u533a\u522b"},"content":{"rendered":"<p>&nbsp;&nbsp; \u5f53\u6211\u4eec\u5f00\u53d1C#\u4ee3\u7801\u7684\u65f6\u5019\uff0c\u7ecf\u5e38\u78b0\u5230\u4e00\u4e2a\u95ee\u9898\uff0c\u6709\u4e9bclass\u63d0\u4f9bClose\uff08\uff09\uff0c\u6709\u4e9bclass\u63d0\u4f9bDispose\uff08\uff09\uff0c\u90a3\u4e48Dispose\u548cClose\u5230\u5e95\u6709\u4ec0\u4e48\u533a\u522b\uff1f<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\u9996\u5148\uff0cDispose\u548cClose\u57fa\u672c\u4e0a\u5e94\u8be5\u662f\u4e00\u6837\u7684\u3002Close\u662f\u4e3a\u4e86\u90a3\u4e9b\u4e0d\u719f\u6089Dispose\u7684\u5f00\u53d1\u8005\u8bbe\u8ba1\u7684\u3002\u56e0\u4e3a\u57fa\u672c\u4e0a\u6240\u6709\u7684developer\u90fd\u77e5\u9053Close\u662f\u5e72\u5417\u7684\uff08\u7279\u522b\u662f\u5bf9\u4e8e\u90a3\u4e9b\u6709C++\u80cc\u666f\u7684developer\uff09\u3002<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\u4f46\u662f\u5f53\u6211\u4eec\u5199code\u65f6\u5019\uff0c\u5982\u679c\u8981\u5b9e\u73b0Close\u548cDispose\u7684\u65f6\u5019\uff0c\u8981\u6ce8\u610fClose\u548cDispose\u7684\u8bbe\u8ba1\u6a21\u5f0f\u2026\u2026net\u7684\u4e00\u4e9bclass\u53ea\u63d0\u4f9bClose\uff0c\u800c\u4e14\u6d3e\u751f\u81eaIDisposable\uff0c\u5e76\u4e14\u9690\u85cf\u4e86Dispose\u65b9\u6cd5\u3002\u662f\u4e0d\u662f\u89c9\u5f97\u5f88\u4e0d\u660e\u767d\u4e86\uff1f<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\u5bf9\u8fd9\u4e9bclass\u6765\u8bf4\uff0c\u5173\u952e\u5728\u4e8e\u5b83\u4eec\u663e\u5f0f\u7684\uff08explicitly\uff09\u5b9e\u73b0\u4e86IDisposable.\u5bf9\u4e8e\u9690\u5f0f\u5b9e\u73b0\u6765\u8bf4\uff0c\u4f60\u53ea\u9700\u8981\u8c03\u7528&#8221;new A\uff08\uff09\u3002Dispose\uff08\uff09&#8221;\uff0c\u4f46\u662f\u5bf9\u4e8e\u663e\u5f0f\u5b9e\u73b0\u6765\u8bf4\uff0cDispose\u4e0d\u4f1a\u662f\u8fd9\u4e2aclass\u7684\u6210\u5458\u51fd\u6570\u3002\u552f\u4e00\u7684\u8c03\u7528\u65b9\u5f0f\u662f\u4f60\u5148\u8981cast\u5230 IDisposable\u624d\u884c\u3002\uff08\u201cnew A\uff08\uff09\u3002Dispose\uff08\uff09\u201d\u7f16\u8bd1\u4e0d\u8fc7\uff0c\u4f46\u662f\u201c\uff08\uff08IDisposable\uff09new A\uff08\uff09\uff09\u3002Dispose\uff08\uff09\u201d\u53ef\u4ee5\u7f16\u8bd1\u8fc7\uff09\u3002\u6240\u4ee5\u8fd9\u6837\u5c31\u7b26\u5408\u4e86\u8bbe\u8ba1\u7684\u8981\u6c42\uff1a\u63d0\u4f9bClose\uff08\uff09\uff0c\u9690\u85cfDispose\uff08\uff09\uff0c\u5e76\u4e14\u5b9e\u73b0\u4e86 IDisposable\u63a5\u53e3\u3002<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\u5728\u3002net\u7684framework\u91cc\uff0cClose\uff08\uff09\u88ab\u8bbe\u8ba1\u6210public\u7684\uff0c\u5e76\u4e14\u5728Close\uff08\uff09\u91cc\u9762call\u88ab\u9690\u85cf\u7684Dispose\uff08\uff09\uff1b Dispose\uff08\uff09\u53bbcall\u53e6\u4e00\u4e2avirtual\u7684Dispose\uff08bool\uff09\u51fd\u6570\u3002\u6240\u4ee5\u5982\u679c\u4f60\u4ece\u8fd9\u4e2aclass\u7ee7\u627f\uff0c\u4f60\u5c31\u5fc5\u987b\u5b9e\u73b0Dispose \uff08bool\uff09\u65b9\u6cd5\u3002<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\u8c03\u7528\u8005call Close\uff08\uff09\u7684\u65f6\u5019\u5c31\u4f1acall\u5230\u4f60\u91cd\u8f7d\u7684\u90a3\u4e2aDispose\uff08bool\uff09\u65b9\u6cd5\u53bb\u91ca\u653e\u8d44\u6e90\u3002<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\u8bf7\u53c2\u8003 <a href=\"http:\/\/blogs.msdn.com\/brada\/archive\/2003\/07\/06\/50127.aspx\" target=\"_blank\" rel=\"external\">http:\/\/blogs.msdn.com\/brada\/archive\/2003\/07\/06\/50127.aspx<\/a><\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\u6ce8\u610f\u4e8b\u9879\uff1a1\uff0cClose\uff08\uff09\u4e0d\u5e94\u8be5\u88ab\u5b9a\u4e49\u6210virtual.\u5bf9\u4e8e\u8fd9\u4e2adesign pattern\uff0cClose\uff08\uff09\u53ea\u662f\u7528\u6765call\u90a3\u4e2a\u9690\u85cf\u7684Dispose\uff08\uff09\uff0c\u7528\u6237\u4e0d\u5e94\u8be5\u6539\u53d8Close\u7684behavior.\u5bf9\u4e8e\u8fd9\u4e2a\u95ee\u9898\uff0c System.IO.Stream\u4e5f\u6709\u8bbe\u8ba1\u95ee\u9898\u3002\u4e4b\u6240\u4ee5\u6709\u95ee\u9898\u662f\u4e3a\u4e86\u6ee1\u8db3\u5411\u540e\u517c\u5bb9\u7684\u9700\u6c42\u3002See <a href=\"http:\/\/msdn2.microsoft.com\/en-us\/library\/ms227422.aspx.\" target=\"_blank\" rel=\"external\">http:\/\/msdn2.microsoft.com\/en-us\/library\/ms227422.aspx.<\/a> \u6587\u6863\u91cc\u9762\u63d0\u5230\u867d\u7136Close\uff08\uff09\u662fvirtual\u7684\uff0c\u4f46\u662f\u4e0d\u5e94\u8be5\u88aboverride.<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\u6ce8\uff0c\u672c\u6587\u8bd1\u81ea\u6211\u4eecteam manager Richard Wong\u7684\u7cbe\u5f69\u8bb2\u89e3\uff0c\u8d34\u4e8e\u6b64\u5904\u4ee5\u671f\u671b\u80fd\u591f\u5bf9\u5927\u5bb6\u6709\u6240\u5e2e\u52a9\u3002\u611f\u8c22Richard\uff01<\/p>\n<p>\u6f14\u793a\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n<p><code><br \/> 1 using System;<br \/> 2 <br \/> 3 namespace ConsoleApplication<br \/> 4 {<br \/> 5&nbsp;&nbsp;&nbsp;&nbsp; abstract class MyStream : IDisposable<br \/> 6&nbsp;&nbsp;&nbsp;&nbsp; {<br \/> 7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public MyStream()<br \/> 8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/> 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_unmanagedResource = Marshal.AllocCoTaskMem(100);<br \/>10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_bitmap = new Bitmap(50, 50);<br \/>11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>12 <br \/>13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #region IDisposable Members<br \/>14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void IDisposable.Dispose()<br \/>15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dispose(true);<br \/>17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GC.SuppressFinalize(this);<br \/>18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>19 <br \/>20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected virtual void Dispose(bool isDisposing)<br \/>21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>22&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!m_disposed)<br \/>23&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (isDisposing)<br \/>25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_bitmap.Dispose();<br \/>27&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>28&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Marshal.FreeCoTaskMem(m_unmanagedResource);<br \/>29&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_disposed = true;<br \/>30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br \/>33&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Close()<br \/>34&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>35&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((IDisposable)this).Dispose();<br \/>36&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>37 <br \/>38&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ~MyStream()<br \/>39&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dispose(false);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>41&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>42 <br \/>43&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private IntPtr m_unmanagedResource;&nbsp;&nbsp;&nbsp;&nbsp; \/\/ Unmanaged resource<br \/>44&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private Bitmap m_bitmap;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/ IDisposable managed resources<br \/>45&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private bool m_disposed;<br \/>46&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br \/>47&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #endregion<br \/>48&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>49 <br \/>50&nbsp;&nbsp;&nbsp;&nbsp; class MyDerivedStream : MyStream<br \/>51&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>52&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public MyDerivedStream()<br \/>53&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>54&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_anotherMemory = Marshal.AllocCoTaskMem(20);<br \/>55&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_anotherImage = new Bitmap(24, 24);<br \/>56&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>57 <br \/>58&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected override void Dispose(bool isDisposing)<br \/>59&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>60&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!m_disposed)<br \/>61&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>62&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (isDisposing)<br \/>63&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>64&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_anotherImage.Dispose();<br \/>65&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>66 <br \/>67&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Marshal.FreeCoTaskMem(m_anotherMemory);<br \/>68&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base.Dispose(isDisposing);<br \/>69&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_disposed = true;<br \/>70&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>71&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>72 <br \/>73&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void Main(string[] args)<br \/>74&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>75&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyStream aStream = new MyDerivedStream();<br \/>76 <br \/>77&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aStream.Close();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/ Allowed<br \/>78&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/ aStream.Dispose();&nbsp;&nbsp;&nbsp;&nbsp;\/\/ Cannot compile<br \/>79 <br \/>80&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((IDisposable)aStream).Dispose();&nbsp;&nbsp;&nbsp;&nbsp; \/\/ Allowed<br \/>81 <br \/>82&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/<br \/>83&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/&nbsp;&nbsp;This one works as well, because newStream calls the explicit implemented<br \/>84&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/&nbsp;&nbsp;IDisposable.Dispose method<br \/>85&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/<br \/>86&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; using (MyStream newStream = new MyDerivedStream())<br \/>87&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>88&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/<br \/>89&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/&nbsp;&nbsp;Do something<br \/>90&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/<br \/>91&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>92&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>93&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br \/>94&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private IntPtr m_anotherMemory;<br \/>95&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private Bitmap m_anotherImage;<br \/>96&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private bool m_disposed;<br \/>97&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>98 }<br \/>99 <\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp; \u5f53\u6211\u4eec\u5f00\u53d1C#\u4ee3\u7801\u7684\u65f6\u5019\uff0c\u7ecf\u5e38\u78b0\u5230\u4e00\u4e2a\u95ee\u9898&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-53","post","type-post","status-publish","format-standard","hentry","category-NET"],"_links":{"self":[{"href":"https:\/\/www.poloo.org\/index.php?rest_route=\/wp\/v2\/posts\/53","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.poloo.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.poloo.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.poloo.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.poloo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=53"}],"version-history":[{"count":0,"href":"https:\/\/www.poloo.org\/index.php?rest_route=\/wp\/v2\/posts\/53\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.poloo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=53"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.poloo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=53"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.poloo.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=53"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}