{"id":314,"date":"2023-03-21T02:21:59","date_gmt":"2023-03-21T09:21:59","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/?p=314"},"modified":"2023-05-10T13:37:34","modified_gmt":"2023-05-10T20:37:34","slug":"%e4%b8%ba%e4%bb%80%e4%b9%88%e8%a6%81%e9%80%89%e6%8b%a9-net","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/%e4%b8%ba%e4%bb%80%e4%b9%88%e8%a6%81%e9%80%89%e6%8b%a9-net\/","title":{"rendered":"\u4e3a\u4ec0\u4e48\u8981\u9009\u62e9.NET?"},"content":{"rendered":"<p><span class=\"ui-provider ha b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak\" dir=\"ltr\" style=\"font-size: 10pt;\"><i><strong>\u672c\u6587\u7ffb\u8bd1\u4e8e.NET Team\u7684\u8fd9\u7bc7\u82f1\u6587\u6587\u7ae0\uff1a<a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/why-dotnet\/\">What is .NET, and why should you choose it? &#8211; .NET Blog (microsoft.com)<\/a><\/strong><\/i><\/span><\/p>\n<p>\u81ea\u4ece\u6211\u4eec\u542f\u52a8\u5feb\u901f\u53d1\u5c55\u7684<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/github.com\/dotnet\/runtime\">.NET \u5f00\u6e90\u548c\u8de8\u5e73\u53f0\u9879\u76ee<\/a>\u4ee5\u6765\uff0c.NET \u53d1\u751f\u4e86\u5f88\u5927\u53d8\u5316\u3002\u6211\u4eec\u91cd\u65b0\u601d\u8003\u5e76\u5b8c\u5584\u4e86\u8be5\u5e73\u53f0\uff0c\u6dfb\u52a0\u4e86\u4e13\u4e3a\u6027\u80fd\u548c\u5b89\u5168\u6027\u800c\u8bbe\u8ba1\u7684\u65b0\u4f4e\u7ea7\u529f\u80fd\uff0c\u4ee5\u53ca\u4ee5\u751f\u4ea7\u529b\u4e3a\u4e2d\u5fc3\u7684\u9ad8\u7ea7\u529f\u80fd\u3002<a href=\"https:\/\/learn.microsoft.com\/archive\/msdn-magazine\/2018\/january\/csharp-all-about-span-exploring-a-new-net-mainstay\">Span&lt;T&gt;<\/a>\u3001<a href=\"https:\/\/devblogs-microsoft-com.translate.goog\/dotnet\/hardware-intrinsics-in-net-core\/?_x_tr_sl=auto&amp;_x_tr_tl=zh-CN&amp;_x_tr_hl=en-US&amp;_x_tr_pto=wapp\">\u786c\u4ef6\u5185\u5728\u51fd\u6570<\/a>\u548c<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/learn.microsoft.com\/dotnet\/csharp\/nullable-references\">\u53ef\u4e3a\u7a7a\u7684\u5f15\u7528\u7c7b\u578b<\/a>\u90fd\u662f\u793a\u4f8b\u3002\u6211\u4eec\u6b63\u5728\u542f\u52a8\u4e00\u4e2a\u65b0\u7684\u201c.NET \u8bbe\u8ba1\u8981\u70b9\u201d\u535a\u5ba2\u7cfb\u5217\uff0c\u4ee5\u63a2\u7d22\u5b9a\u4e49\u5f53\u4eca .NET \u5e73\u53f0\u7684\u57fa\u7840\u77e5\u8bc6\u548c\u8bbe\u8ba1\u9009\u62e9\uff0c\u4ee5\u53ca\u5b83\u4eec\u5982\u4f55\u4f7f\u60a8\u73b0\u5728\u7f16\u5199\u7684\u4ee3\u7801\u53d7\u76ca\u3002<\/p>\n<p>\u672c\u7cfb\u5217\u7684\u7b2c\u4e00\u7bc7\u6587\u7ae0\u5168\u9762\u6982\u8ff0\u4e86\u5e73\u53f0\u7684\u652f\u67f1\u548c\u8bbe\u8ba1\u8981\u70b9\u3002\u5f53\u60a8\u9009\u62e9 .NET \u65f6\uff0c\u5b83\u5728\u57fa\u7840\u7ea7\u522b\u4e0a\u63cf\u8ff0\u4e86\u201c\u60a8\u5f97\u5230\u4e86\u4ec0\u4e48\u201d\uff0c\u65e8\u5728\u6210\u4e3a\u4e00\u4e2a\u5145\u5206\u4e14\u4ee5\u4e8b\u5b9e\u4e3a\u4e2d\u5fc3\u7684\u6846\u67b6\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528\u5b83\u6765\u5411\u5176\u4ed6\u4eba\u63cf\u8ff0\u8be5\u5e73\u53f0\u3002\u540e\u7eed\u5e16\u5b50\u5c06\u66f4\u8be6\u7ec6\u5730\u4ecb\u7ecd\u8fd9\u4e9b\u76f8\u540c\u7684\u4e3b\u9898\uff0c\u56e0\u4e3a\u8fd9\u7bc7\u5e16\u5b50\u5e76\u6ca1\u6709\u5b8c\u5168\u516c\u6b63\u5730\u4ecb\u7ecd\u8fd9\u4e9b\u529f\u80fd\u4e2d\u7684\u4efb\u4f55\u4e00\u4e2a\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e0d\u63cf\u8ff0\u5de5\u5177\uff0c\u5982 Visual Studio\uff0c\u4e5f\u4e0d\u6db5\u76d6\u66f4\u9ad8\u7ea7\u7684\u5e93\u548c\u5e94\u7528\u7a0b\u5e8f\u6a21\u578b\uff0c\u5982<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/dotnet.microsoft.com\/learn\/aspnet\/what-is-aspnet-core\">ASP.NET Core<\/a>\u63d0\u4f9b\u7684\u90a3\u4e9b\u3002<\/p>\n<p>\u6211\u4eec\u6240\u8bf4\u7684\u201c.NET\u201d\u662f<a href=\"https:\/\/devblogs-microsoft-com.translate.goog\/dotnet\/announcing-dotnet-7\/?_x_tr_sl=auto&amp;_x_tr_tl=zh-CN&amp;_x_tr_hl=en-US&amp;_x_tr_pto=wapp\">\u73b0\u4ee3\u7684 .NET Core<\/a>\u3002\u4ee5\u9632\u60a8\u9519\u8fc7\u4e86\uff0c\u6211\u4eec\u5728 GitHub \u4e0a\u4f5c\u4e3a\u5f00\u6e90\u9879\u76ee<a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/net-core-is-open-source\/\">\u4e8e 2014 \u5e74\u542f\u52a8\u4e86\u8fd9\u4e2a\u9879\u76ee<\/a>\u3002\u5b83\u5728<a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/arm64-performance-improvements-in-dotnet-7\/\">Arm64<\/a>\u3001x64 \u548c\u5176\u4ed6\u82af\u7247\u67b6\u6784\u4e0a\u7684Linux\u3001macOS \u548c Windows \u4e0a\u8fd0\u884c\u3002\u5b83\u5728<a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/linux.md\">\u4e00\u5806Linux\u53d1\u884c\u7248<\/a>\u4e2d\u53ef\u7528\u3002\u5b83\u4e0e .NET Framework \u4fdd\u6301\u4e86<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/learn.microsoft.com\/dotnet\/core\/porting\/\">\u5f88\u5927\u7684\u517c\u5bb9\u6027<\/a>\uff0c\u4f46\u53c8\u662f\u4e00\u4e2a<a href=\"https:\/\/devblogs-microsoft-com.translate.goog\/dotnet\/net-core-is-the-future-of-net\/?_x_tr_sl=auto&amp;_x_tr_tl=zh-CN&amp;_x_tr_hl=en-US&amp;_x_tr_pto=wapp\">\u5168\u65b0\u7684\u65b9\u5411\u548c\u4ea7\u54c1<\/a>\u3002<\/p>\n<p>\u8fdb\u5165\u7ec6\u8282\u4e4b\u524d\uff0c\u6709\u5fc5\u8981\u8c08\u8c08 .NET \u7684\u4f7f\u7528\u3002\u6570\u767e\u4e07\u5f00\u53d1\u4eba\u5458\u4f7f\u7528\u5b83\u5728<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/7.0\/supported-os.md\">\u591a\u4e2a\u64cd\u4f5c\u7cfb\u7edf\u548c\u82af\u7247\u67b6\u6784<\/a>\u4e0a\u521b\u5efa\u4e91\u3001\u5ba2\u6237\u7aef\u548c\u5176\u4ed6\u5e94\u7528\u7a0b\u5e8f\u3002\u5b83\u4e5f\u5728\u4e00\u4e9b<a href=\"https:\/\/devblogs-microsoft-com.translate.goog\/dotnet\/category\/developer-stories\/?_x_tr_sl=auto&amp;_x_tr_tl=zh-CN&amp;_x_tr_hl=en-US&amp;_x_tr_pto=wapp\">\u8457\u540d\u7684\u5730\u65b9<\/a>\u8fd0\u884c\uff0c\u5982<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/azure.microsoft.com\/\">Azure<\/a>\u3001<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/wouterdekort.com\/2022\/05\/25\/the-stackoverflow-journey-to-dotnet6\/\">StackOverflow<\/a>\u548c<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/blog.unity.com\/technology\/unity-and-net-whats-next\">Unity<\/a>\u3002\u5404\u79cd\u89c4\u6a21\u7684\u516c\u53f8\u90fd\u4f7f\u7528 .NET \u5f88\u5e38\u89c1\uff0c\u5c24\u5176\u662f\u5927\u516c\u53f8\u3002\u5728\u5f88\u591a\u5730\u65b9\uff0c\u9700\u8981\u4e86\u89e3.NET \u8fd9\u9879\u597d\u6280\u672f\u624d\u80fd\u627e\u5230\u5de5\u4f5c\u3002\u3002<\/p>\n<p>\u67e5\u770b\u793e\u533a\u5bf9\u8fd9\u7bc7\u6587\u7ae0\u7684\u53cd\u5e94\uff1a<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/andrewlock.net\/thoughts-on-what-is-dotnet-and-why-should-you-choose-it\/\">\u5173\u4e8e\u201c\u4ec0\u4e48\u662f .NET\uff0c\u4e3a\u4ec0\u4e48\u8981\u9009\u62e9\u5b83\uff1f\u201d\u7684\u60f3\u6cd5<\/a><\/p>\n<h4><strong>.NET \u8bbe\u8ba1\u8981\u70b9<\/strong><\/h4>\n<p>.NET \u5e73\u53f0\u4ee3\u8868<strong>\u751f\u4ea7\u529b<\/strong>\u3001<strong>\u6027\u80fd<\/strong>\u3001<strong>\u5b89\u5168\u6027<\/strong>\u548c<strong>\u53ef\u9760\u6027<\/strong>\u3002.NET \u5728\u8fd9\u4e9b\u4ef7\u503c\u4e4b\u95f4\u53d6\u5f97\u7684\u5e73\u8861\u4f7f\u5176\u5177\u6709\u5438\u5f15\u529b\u3002<\/p>\n<p>.NET \u7684\u8bbe\u8ba1\u8981\u70b9\u53ef\u4ee5\u5f52\u7ed3\u4e3a\u5728\u5b89\u5168\u57df\uff08\u4e00\u5207\u90fd\u9ad8\u6548\uff09\u548c\u4e0d\u5b89\u5168\u57df\uff08\u5b58\u5728\u5927\u91cf\u529f\u80fd\uff09\u4e2d\u90fd\u6709\u6548\u548c\u9ad8\u6548\u3002.NET \u53ef\u80fd\u662f\u5177\u6709\u6700\u591a\u5185\u7f6e\u529f\u80fd\u7684\u6258\u7ba1\u73af\u5883\uff0c\u540c\u65f6\u8fd8\u63d0\u4f9b\u6700\u4f4e\u7684\u4e0e\u5916\u90e8\u4e16\u754c\u4e92\u64cd\u4f5c\u7684\u6210\u672c\uff0c\u5e76\u4e14\u4e24\u8005\u4e4b\u95f4\u6ca1\u6709\u6743\u8861\u3002\u4e8b\u5b9e\u4e0a\uff0c<a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/performance_improvements_in_net_7\/\">\u8bb8\u591a\u529f\u80fd\u90fd\u5229\u7528\u4e86\u8fd9\u79cd\u65e0\u7f1d\u5212\u5206<\/a>\uff0c\u5728\u5e95\u5c42<a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/file-io-improvements-in-dotnet-6\/\">\u64cd\u4f5c\u7cfb\u7edf<\/a>\u548c<a href=\"https:\/\/devblogs-microsoft-com.translate.goog\/dotnet\/arm64-performance-improvements-in-dotnet-7\/?_x_tr_sl=auto&amp;_x_tr_tl=zh-CN&amp;_x_tr_hl=en-US&amp;_x_tr_pto=wapp\">CPU<\/a>\u7684\u539f\u59cb\u80fd\u529b\u548c\u529f\u80fd\u4e0a\u6784\u5efa\u5b89\u5168\u7684\u6258\u7ba1 API\u202f\u3002<\/p>\n<p>\u6211\u4eec\u53ef\u4ee5\u8fdb\u4e00\u6b65\u6269\u5c55\u8bbe\u8ba1\u70b9\uff1a<\/p>\n<ul>\n<li><strong>\u751f\u4ea7\u529b<\/strong>\u662f\u8de8\u8fd0\u884c\u65f6\u3001\u5e93\u3001\u8bed\u8a00\u548c\u5de5\u5177\u7684\u9996\u8981\u8bbe\u8ba1\u8003\u8651\u56e0\u7d20\u3002<\/li>\n<li><strong>\u5b89\u5168\u4ee3\u7801<\/strong>\u662f\u4e3b\u8981\u7684\u8ba1\u7b97\u6a21\u578b\uff0c\u800c\u4e0d\u5b89\u5168\u4ee3\u7801\u652f\u6301\u989d\u5916\u7684\u624b\u52a8\u4f18\u5316\u3002<\/li>\n<li><strong>\u652f\u6301\u9759\u6001\u548c\u52a8\u6001\u4ee3\u7801<\/strong>\uff0c\u652f\u6301\u5e7f\u6cdb\u7684\u4e0d\u540c\u573a\u666f\u3002<\/li>\n<li><strong>\u672c\u673a\u4ee3\u7801\u4e92\u64cd\u4f5c\u548c\u786c\u4ef6\u5185\u5728\u51fd\u6570<\/strong>\u6210\u672c\u4f4e\u4e14\u4fdd\u771f\u5ea6\u9ad8\uff08\u539f\u59cb API \u548c\u6307\u4ee4\u8bbf\u95ee\uff09\u3002<\/li>\n<li><strong>\u4ee3\u7801\u53ef\u8de8\u5e73\u53f0<\/strong>\uff08\u64cd\u4f5c\u7cfb\u7edf\u3001\u82af\u7247\u67b6\u6784\uff09\u79fb\u690d\uff0c\u800c\u5e73\u53f0\u5b9a\u4f4d\u5219\u652f\u6301\u4e13\u4e1a\u5316\u548c\u4f18\u5316\u3002<\/li>\n<li>\u901a\u8fc7\u901a\u7528\u7f16\u7a0b\u6a21\u578b\u7684<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/github.com\/dotnet\/designs\/blob\/main\/accepted\/2020\/form-factors.md\">\u4e13\u95e8\u5b9e\u73b0\uff0c\u53ef\u4ee5\u5b9e\u73b0<\/a><strong>\u8de8\u7f16\u7a0b\u57df<\/strong>\uff08\u4e91\u3001\u5ba2\u6237\u7aef\u3001\u6e38\u620f\uff09\u7684\u9002\u5e94\u6027\u3002<\/li>\n<li><a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/opentelemetry.io\/\">OpenTelemetry<\/a>\u548c<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/grpc.io\/\">gRPC<\/a>\u7b49<strong>\u884c\u4e1a\u6807\u51c6<\/strong>\u4f18\u4e8e\u5b9a\u5236\u89e3\u51b3\u65b9\u6848\u3002<\/li>\n<\/ul>\n<h4><strong>.NET \u5806\u6808\u7684\u652f\u67f1<\/strong><\/h4>\n<p>\u8fd0\u884c\u65f6\u3001\u5e93\u548c\u8bed\u8a00\u662f .NET \u5806\u6808\u7684\u652f\u67f1\u3002\u66f4\u9ad8\u7ea7\u522b\u7684\u7ec4\u4ef6\uff0c\u5982 .NET \u5de5\u5177\u548c\u5e94\u7528\u7a0b\u5e8f\u5806\u6808\uff0c\u5982 ASP.NET Core\uff0c\u6784\u5efa\u5728\u8fd9\u4e9b\u652f\u67f1\u4e4b\u4e0a\u3002\u8fd9\u4e9b\u652f\u67f1\u5177\u6709\u5171\u751f\u5173\u7cfb\uff0c\u7531\u4e00\u4e2a\u56e2\u961f\uff08Microsoft \u5458\u5de5\u548c\u5f00\u6e90\u793e\u533a\uff09\u5171\u540c\u8bbe\u8ba1\u548c\u6784\u5efa\uff0c\u81f4\u529b\u4e8e\u8fd9\u4e9b\u7ec4\u4ef6\u7684\u591a\u4e2a\u65b9\u9762\u5e76\u4e3a\u5176\u63d0\u4f9b\u4fe1\u606f\u3002<\/p>\n<p>C#\u662f\u9762\u5411\u5bf9\u8c61\u7684\uff0c\u8fd0\u884c\u65f6\u652f\u6301\u9762\u5411\u5bf9\u8c61\u3002C# \u9700\u8981\u5783\u573e\u6536\u96c6\uff0c\u8fd0\u884c\u65f6\u63d0\u4f9b\u8ddf\u8e2a\u5783\u573e\u6536\u96c6\u5668\u3002\u4e8b\u5b9e\u4e0a\uff0c\u5c06 C#\uff08\u4ee5\u5176\u5b8c\u6574\u5f62\u5f0f\uff09\u79fb\u690d\u5230\u6ca1\u6709\u5783\u573e\u6536\u96c6\u7684\u7cfb\u7edf\u662f\u4e0d\u53ef\u80fd\u7684\u3002\u8fd9\u4e9b\u5e93\uff08\u4ee5\u53ca\u5e94\u7528\u7a0b\u5e8f\u5806\u6808\uff09\u5c06\u8fd9\u4e9b\u529f\u80fd\u5851\u9020\u6210\u6982\u5ff5\u548c\u5bf9\u8c61\u6a21\u578b\uff0c\u4f7f\u5f00\u53d1\u4eba\u5458\u80fd\u591f\u5728\u76f4\u89c2\u7684\u5de5\u4f5c\u6d41\u7a0b\u4e2d\u9ad8\u6548\u5730\u7f16\u5199\u7b97\u6cd5\u3002<\/p>\n<p><a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/learn.microsoft.com\/dotnet\/csharp\/language-reference\/builtin-types\/record\">C# \u662f\u4e00\u79cd\u73b0\u4ee3\u7684\u3001\u5b89\u5168\u7684\u3001\u901a\u7528\u7684\u7f16\u7a0b\u8bed\u8a00\uff0c\u6db5\u76d6\u4e86\u4ece\u9762\u5411\u6570\u636e\u7684\u8bb0\u5f55<\/a>\u7b49\u9ad8\u7ea7\u529f\u80fd\u5230<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/learn.microsoft.com\/dotnet\/csharp\/language-reference\/proposals\/csharp-9.0\/function-pointers\">\u51fd\u6570\u6307\u9488<\/a>\u7b49\u4f4e\u7ea7\u529f\u80fd\u3002\u5b83\u63d0\u4f9b\u9759\u6001\u7c7b\u578b\u4ee5\u53ca\u7c7b\u578b\u548c\u5185\u5b58\u5b89\u5168\u4f5c\u4e3a\u57fa\u51c6\u529f\u80fd\uff0c\u540c\u65f6\u63d0\u9ad8\u5f00\u53d1\u4eba\u5458\u7684\u5de5\u4f5c\u6548\u7387\u548c\u4ee3\u7801\u5b89\u5168\u6027\u3002C# \u7f16\u8bd1\u5668\u4e5f\u662f\u53ef\u6269\u5c55\u7684\uff0c\u652f\u6301\u63d2\u4ef6\u6a21\u578b\uff0c\u4f7f\u5f00\u53d1\u4eba\u5458\u80fd\u591f\u901a\u8fc7\u989d\u5916\u7684\u8bca\u65ad\u548c\u7f16\u8bd1\u65f6\u4ee3\u7801\u751f\u6210\u6765\u589e\u5f3a\u7cfb\u7edf\u3002<\/p>\n<p>\u8bb8\u591a C# \u529f\u80fd\u5df2\u7ecf\u5f71\u54cd\u6216\u53d7\u6700\u5148\u8fdb\u7684\u7f16\u7a0b\u8bed\u8a00\u7684\u5f71\u54cd\u3002\u4f8b\u5982\uff0cC# \u662f\u7b2c\u4e00\u4e2a\u5f15\u5165<a href=\"https:\/\/learn.microsoft.com\/dotnet\/standard\/parallel-programming\/task-based-asynchronous-programming\">async\u202fand\u202fawait<\/a>.\u202f\u540c\u65f6\uff0cC# \u501f\u9274\u4e86\u5176\u4ed6\u7f16\u7a0b\u8bed\u8a00\u4e2d\u9996\u5148\u5f15\u5165\u7684\u6982\u5ff5\uff0c\u4f8b\u5982\u91c7\u7528<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/learn.microsoft.com\/dotnet\/csharp\/fundamentals\/functional\/pattern-matching\">\u6a21\u5f0f\u5339\u914d<\/a>\u548c<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/learn.microsoft.com\/dotnet\/csharp\/language-reference\/builtin-types\/record%23positional-syntax-for-property-definition\">\u4e3b\u6784\u9020\u51fd\u6570<\/a>\u7b49\u51fd\u6570\u5f0f\u65b9\u6cd5\u3002<\/p>\n<p>\u6838\u5fc3\u5e93\u516c\u5f00\u4e86\u6570\u5343\u79cd\u7c7b\u578b\uff0c\u5176\u4e2d\u8bb8\u591a\u7c7b\u578b\u4e0e C# \u8bed\u8a00\u96c6\u6210\u5e76\u4e3a\u5176\u63d0\u4f9b\u52a8\u529b\u3002\u4f8b\u5982\uff0cC#\u7684<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/learn.microsoft.com\/dotnet\/csharp\/language-reference\/statements\/iteration-statements%23the-foreach-statement\">foreach<\/a>\u652f\u6301\u679a\u4e3e\u4efb\u610f\u96c6\u5408\uff0c\u57fa\u4e8e\u6a21\u5f0f\u7684\u4f18\u5316\u4f7f<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.collections.generic.list-1\">List&lt;T&gt;<\/a>\u202f\u7b49\u96c6\u5408\u80fd\u591f\u88ab\u7b80\u5355\u9ad8\u6548\u5730\u5904\u7406\u3002\u8d44\u6e90\u7ba1\u7406\u53ef\u80fd\u7559\u7ed9\u5783\u573e\u6536\u96c6\uff0c\u4f46\u53ef\u4ee5\u901a\u8fc7 <a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.idisposable\">IDisposable<\/a>\u202f\u548c<a href=\"https:\/\/learn.microsoft.com\/dotnet\/csharp\/language-reference\/keywords\/using-statement\">using<\/a>\u4e2d\u7684\u76f4\u63a5\u8bed\u8a00\u652f\u6301\u8fdb\u884c\u5feb\u901f\u6e05\u7406\u3002<\/p>\n<p><a href=\"https:\/\/devblogs-microsoft-com.translate.goog\/dotnet\/string-interpolation-in-c-10-and-net-6\/?_x_tr_sl=auto&amp;_x_tr_tl=zh-CN&amp;_x_tr_hl=en-US&amp;_x_tr_pto=wapp\">C# \u4e2d\u7684\u5b57\u7b26\u4e32\u63d2\u503c<\/a>\u65e2\u5bcc\u6709\u8868\u73b0\u529b\u53c8\u9ad8\u6548\uff0c\u4e0e<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.string\">string<\/a> \u3001<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.text.stringbuilder\">StringBuilder<\/a> \u548c<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.span-1\">Span&lt;T&gt;<\/a> \u7b49\u8de8\u6838\u5fc3\u5e93\u7c7b\u578b\u7684\u5b9e\u73b0\u96c6\u6210\u5e76\u53d7\u5176\u652f\u6301\u3002<u>\u8bed\u8a00<\/u><a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/learn.microsoft.com\/dotnet\/csharp\/programming-guide\/concepts\/linq\/\">\u96c6\u6210\u67e5\u8be2 (LINQ)<\/a>\u529f\u80fd\u7531\u5e93\u4e2d\u7684\u6570\u767e\u4e2a\u5e8f\u5217\u5904\u7406\u4f8b\u7a0b\u63d0\u4f9b\u652f\u6301\uff0c\u4f8b\u5982<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.linq.enumerable.where\">Where<\/a>,\u3001<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.linq.enumerable.select\">Select<\/a>\u548c<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.linq.enumerable.groupby\">GroupBy<\/a>\uff0c\u5177\u6709\u652f\u6301\u5185\u5b58\u4e2d\u548c\u8fdc\u7a0b\u6570\u636e\u6e90\u7684\u53ef\u6269\u5c55\u8bbe\u8ba1\u548c\u5b9e\u73b0\u3002\u4ece<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/learn.microsoft.com\/dotnet\/api\/system.io.compression\">\u538b\u7f29<\/a>\u5230<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/learn.microsoft.com\/dotnet\/api\/system.security.cryptography\">\u5bc6\u7801\u5b66<\/a>\u518d\u5230<a href=\"https:\/\/devblogs-microsoft-com.translate.goog\/dotnet\/regular-expression-improvements-in-dotnet-7?_x_tr_sl=auto&amp;_x_tr_tl=zh-CN&amp;_x_tr_hl=en-US&amp;_x_tr_pto=wapp\">\u6b63\u5219\u8868\u8fbe\u5f0f<\/a>\uff0c\u5217\u8868\u8fd8\u5728\u7ee7\u7eed\uff0c\u76f4\u63a5\u96c6\u6210\u5230\u8bed\u8a00\u4e2d\u7684\u5185\u5bb9\u53ea\u662f\u4f5c\u4e3a\u6838\u5fc3 .NET \u5e93\u7684\u4e00\u90e8\u5206\u516c\u5f00\u7684\u529f\u80fd\u7684\u8868\u9762\u3002\u4e00\u4e2a\u5168\u9762\u7684\u4ece<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/learn.microsoft.com\/dotnet\/api\/system.net.sockets\">\u5957\u63a5\u5b57<\/a>\u5230<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/learn.microsoft.com\/dotnet\/api\/system.net.http\">HTTP\/3<\/a>\u7684<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/learn.microsoft.com\/dotnet\/api\/system.net\">\u7f51\u7edc\u5806\u6808<\/a>\u662f\u4e00\u4e2a\u72ec\u7acb\u7684\u9886\u57df\u3002\u540c\u6837\uff0c\u5e93\u652f\u6301\u5904\u7406\u65e0\u6570\u683c\u5f0f\u548c\u8bed\u8a00\uff0c\u5982<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/learn.microsoft.com\/dotnet\/api\/system.text.json\">JSON<\/a>\u3001<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/learn.microsoft.com\/dotnet\/api\/system.xml\">XML<\/a>\u548c<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/learn.microsoft.com\/dotnet\/api\/system.formats.tar\">tar<\/a>\u3002<\/p>\n<p>.NET \u8fd0\u884c\u65f6\u6700\u521d\u79f0\u4e3a\u201c\u516c\u5171\u8bed\u8a00\u8fd0\u884c\u65f6 (CLR)\u201d\u3002\u5b83\u7ee7\u7eed\u652f\u6301\u591a\u79cd\u8bed\u8a00\uff0c\u4e00\u4e9b<a href=\"https:\/\/devblogs-microsoft-com.translate.goog\/dotnet\/update-to-the-dotnet-language-strategy\/?_x_tr_sl=auto&amp;_x_tr_tl=zh-CN&amp;_x_tr_hl=en-US&amp;_x_tr_pto=wapp\">\u7531 Microsoft \u7ef4\u62a4<\/a>\uff08\u4f8b\u5982 C#\u3001F#\u3001Visual Basic\u3001C++\/CLI \u548c PowerShell\uff09\uff0c\u4e00\u4e9b\u7531\u5176\u4ed6\u7ec4\u7ec7\u7ef4\u62a4\uff08\u4f8b\u5982 Cobol\u3001<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/github.com\/ikvm-revived\/ikvm\">Java<\/a>\u3001<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/www.peachpie.io\/\">PHP<\/a>\u3001<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/ironpython.net\/\">Python<\/a>\u3001<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/github.com\/IronScheme\/IronScheme\">Scheme<\/a>\uff09\u3002\u8bb8\u591a\u6539\u8fdb\u4e0e\u8bed\u8a00\u65e0\u5173\uff0c\u8fd9\u4f1a\u5f15\u53d1\u6240\u6709\u6539\u5584\u3002<\/p>\n<p>\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u5c06\u770b\u770b\u5b83\u4eec\u4e00\u8d77\u63d0\u4f9b\u7684\u5404\u79cd\u5e73\u53f0\u7279\u6027\u3002\u6211\u4eec\u53ef\u4ee5\u5206\u522b\u8be6\u7ec6\u8bf4\u660e\u8fd9\u4e9b\u7ec4\u4ef6\u4e2d\u7684\u6bcf\u4e00\u4e2a\uff0c\u4f46\u60a8\u5f88\u5feb\u5c31\u4f1a\u770b\u5230\u5b83\u4eec\u5728\u4ea4\u4ed8 .NET \u8bbe\u8ba1\u70b9\u65b9\u9762\u8fdb\u884c\u5408\u4f5c\u3002\u8ba9\u6211\u4eec\u4ece\u7c7b\u578b\u7cfb\u7edf\u5f00\u59cb\u3002<\/p>\n<h4><strong>\u7c7b\u578b\u7cfb\u7edf<\/strong><\/h4>\n<p>.NET \u7c7b\u578b\u7cfb\u7edf\u63d0\u4f9b\u4e86\u663e\u7740\u7684\u5e7f\u5ea6\uff0c\u5927\u81f4\u540c\u7b49\u5730\u6ee1\u8db3\u4e86\u5b89\u5168\u6027\u3001\u63cf\u8ff0\u6027\u3001\u52a8\u6001\u6027\u548c\u672c\u673a\u4e92\u64cd\u4f5c\u6027\u3002<\/p>\n<p>\u9996\u5148\uff0c\u7c7b\u578b\u7cfb\u7edf\u652f\u6301\u9762\u5411\u5bf9\u8c61\u7684\u7f16\u7a0b\u6a21\u578b\u3002\u5b83\u5305\u62ec\u7c7b\u578b\u3001\uff08\u5355\u4e2a\u57fa\u7c7b\uff09\u7ee7\u627f\u3001\u63a5\u53e3\uff08\u5305\u62ec\u9ed8\u8ba4\u65b9\u6cd5\u5b9e\u73b0\uff09\u548c\u865a\u62df\u65b9\u6cd5\u5206\u6d3e\uff0c\u4e3a\u9762\u5411\u5bf9\u8c61\u5141\u8bb8\u7684\u6240\u6709\u7c7b\u578b\u5206\u5c42\u63d0\u4f9b\u5408\u7406\u7684\u884c\u4e3a\u3002<\/p>\n<p><a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/learn.microsoft.com\/dotnet\/csharp\/fundamentals\/types\/generics\">\u6cdb\u578b<\/a>\u662f\u4e00\u79cd\u666e\u904d\u7684\u7279\u6027\uff0c\u5b83\u5141\u8bb8\u5c06\u7c7b\u4e13\u95e8\u5316\u4e3a\u4e00\u79cd\u6216\u591a\u79cd\u7c7b\u578b\u3002\u4f8b\u5982\uff0c<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.collections.generic.list-1\">List&lt;T&gt;<\/a>\u202f\u662f\u4e00\u4e2a\u5f00\u653e\u7684\u901a\u7528\u7c7b\uff0c\u800c\u50cf\u202fList&lt;string&gt;\u202f\u548c\u202fList&lt;int&gt;\u202f\u8fd9\u6837\u7684\u5b9e\u4f8b\u5316\u907f\u514d\u4e86\u5bf9\u5355\u72ec\u7684\u202fListOfString\u202f\u548c\u202fListOfInt\u202f\u7c7b\u7684\u9700\u8981\uff0c\u6216\u8005\u50cf<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.collections.arraylist\">ArrayList<\/a>\u90a3\u6837\u4f9d\u8d56object\u548c\u5f3a\u5236\u8f6c\u6362\u3002\u6cdb\u578b\u8fd8\u53ef\u4ee5\u8de8\u4e0d\u540c\u7c7b\u578b\u521b\u5efa\u6709\u7528\u7684\u7cfb\u7edf\uff08\u5e76\u51cf\u5c11\u5bf9\u5927\u91cf\u4ee3\u7801\u7684\u9700\u6c42\uff09\uff0c\u4f8b\u5982<a href=\"https:\/\/learn.microsoft.com\/dotnet\/standard\/generics\/math\">Generic Math<\/a>.<\/p>\n<p><a href=\"https:\/\/learn.microsoft.com\/dotnet\/csharp\/delegates-overview\">Delegates<\/a>\u202f\u548c\u202f<a href=\"https:\/\/learn.microsoft.com\/dotnet\/csharp\/language-reference\/operators\/lambda-expressions\">lambdas<\/a>\u202f\u5141\u8bb8\u5c06\u65b9\u6cd5\u4f5c\u4e3a\u6570\u636e\u4f20\u9012\uff0c\u8fd9\u4f7f\u5f97\u5c06\u5916\u90e8\u4ee3\u7801\u96c6\u6210\u5230\u53e6\u4e00\u4e2a\u7cfb\u7edf\u62e5\u6709\u7684\u64cd\u4f5c\u6d41\u4e2d\u53d8\u5f97\u5bb9\u6613\u3002\u5b83\u4eec\u662f\u4e00\u79cd\u201c\u80f6\u6c34\u4ee3\u7801\u201d\uff0c\u5b83\u4eec\u7684\u7b7e\u540d\u901a\u5e38\u662f\u901a\u7528\u7684\uff0c\u53ef\u4ee5\u5e7f\u6cdb\u4f7f\u7528\u3002<\/p>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\">app.MapGet(\"\/Product\/{id}\", async (int id) =&gt;\r\n{\r\n    if (await IsProductIdValid(id))\r\n    {\r\n        return await GetProductDetails(id);\r\n    }\r\n\r\n    return Products.InvalidProduct;\r\n});<\/code><\/pre>\n<p>\u8fd9\u79cd\u5bf9 lambdas\u7684\u4f7f\u7528\u662f\u202f<a href=\"https:\/\/learn.microsoft.com\/aspnet\/core\/fundamentals\/minimal-apis\/overview\">ASP.NET Core Minimal APIs<\/a>\u7684\u4e00\u90e8\u5206\u3002\u5b83\u53ef\u4ee5\u76f4\u63a5\u5411\u8def\u7531\u7cfb\u7edf\u63d0\u4f9b\u7aef\u70b9\u5b9e\u73b0\u3002\u5728\u66f4\u65b0\u7684\u7248\u672c\u4e2d\uff0cASP.NET Core\u66f4\u5e7f\u6cdb\u5730\u4f7f\u7528\u4e86\u7c7b\u578b\u7cfb\u7edf\u3002<\/p>\n<p>\u4e0e .NET \u7684 GC\u7ba1\u7406\u7c7b\u578b\u76f8\u6bd4\uff0c<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/learn.microsoft.com\/dotnet\/csharp\/language-reference\/builtin-types\/value-types\">\u503c\u7c7b\u578b<\/a>\u548c<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/learn.microsoft.com\/dotnet\/csharp\/language-reference\/operators\/stackalloc\">\u5806\u6808\u5206\u914d\u7684\u5185\u5b58\u5757\u63d0\u4f9b\u4e86\u5bf9\u6570\u636e\u548c\u672c\u673a\u5e73\u53f0\u4e92\u64cd\u4f5c\u7684\u66f4\u76f4\u63a5\u3001\u4f4e\u7ea7\u522b\u7684\u63a7\u5236\u3002<\/a>.NET \u4e2d\u7684\u5927\u591a\u6570\u539f\u59cb\u7c7b\u578b\uff0c\u5982\u6574\u6570\u7c7b\u578b\uff0c\u90fd\u662f\u503c\u7c7b\u578b\uff0c\u7528\u6237\u53ef\u4ee5\u5b9a\u4e49\u81ea\u5df1\u5177\u6709\u76f8\u4f3c\u8bed\u4e49\u7684\u7c7b\u578b\u3002<\/p>\n<p>.NET \u7684\u6cdb\u578b\u7cfb\u7edf\u5b8c\u5168\u652f\u6301\u503c\u7c7b\u578b\uff0c\u8fd9\u610f\u5473\u7740\u50cf List&lt;T&gt;\u202f\u8fd9\u6837\u7684\u6cdb\u578b\u7c7b\u578b\u53ef\u4ee5\u63d0\u4f9b\u503c\u7c7b\u578b\u96c6\u5408\u7684\u5e73\u5766\u3001\u65e0\u5f00\u9500\u7684\u5185\u5b58\u8868\u793a\u3002 \u6b64\u5916\uff0c.NET \u6cdb\u578b\u5728\u66ff\u6362\u503c\u7c7b\u578b\u65f6\u63d0\u4f9b\u4e13\u95e8\u7684\u7f16\u8bd1\u4ee3\u7801\uff0c\u8fd9\u610f\u5473\u7740\u8fd9\u4e9b\u6cdb\u578b\u4ee3\u7801\u8def\u5f84\u53ef\u4ee5\u907f\u514d\u6602\u8d35\u7684 GC \u5f00\u9500\u3002<\/p>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\">byte magicSequence = 0b1000_0001;\r\nSpan&lt;byte&gt; data = stackalloc byte[128];\r\nDuplicateSequence(data[0..4], magicSequence);<\/code><\/pre>\n<p>\u6b64\u4ee3\u7801\u751f\u6210\u5806\u6808\u5206\u914d\u7684\u503c\u3002Span&lt;byte&gt;\u202f\u662fbyte*\u7684\u5b89\u5168\u548c\u66f4\u4e30\u5bcc\u7684\u7248\u672c\uff0c\u63d0\u4f9b\u957f\u5ea6\u503c\uff08\u5e26\u8fb9\u754c\u68c0\u67e5\uff09\u548c\u65b9\u4fbf\u7684\u8de8\u5ea6\u5207\u7247\u3002<\/p>\n<p><a href=\"https:\/\/learn.microsoft.com\/dotnet\/csharp\/language-reference\/keywords\/ref\">Ref<\/a>\u202f\u7c7b\u578b\u548c\u53d8\u91cf\u662f\u4e00\u79cd\u5c0f\u578b\u7f16\u7a0b\u6a21\u578b\uff0c\u5b83\u63d0\u4f9b\u5bf9\u7c7b\u578b\u7cfb\u7edf\u6570\u636e\u7684\u8f83\u4f4e\u7ea7\u522b\u548c\u66f4\u8f7b\u91cf\u7ea7\u62bd\u8c61\u3002\u8fd9\u5305\u62ec<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.span-1\">Span&lt;T&gt;<\/a>\u3002\u6b64\u7f16\u7a0b\u6a21\u578b\u4e0d\u662f\u901a\u7528\u7684\uff0c\u5305\u62ec\u7ef4\u62a4\u5b89\u5168\u7684\u91cd\u8981\u9650\u5236\u3002<\/p>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\">internal readonly ref T _reference;<\/code><\/pre>\n<p><a href=\"https:\/\/learn.microsoft.com\/dotnet\/csharp\/language-reference\/keywords\/ref#ref-fields\">\u8fd9\u79cd\u4f7f\u7528ref<\/a> \u5bfc\u81f4\u5c06\u6307\u9488\u590d\u5236\u5230\u5e95\u5c42\u5b58\u50a8\uff0c\u800c\u4e0d\u662f\u590d\u5236\u8be5\u6307\u9488\u5f15\u7528\u7684\u6570\u636e\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u503c\u7c7b\u578b\u662f\u201c\u6309\u503c\u590d\u5236\u201d\u3002ref\u63d0\u4f9b\u201c\u6309\u5f15\u7528\u590d\u5236\u201d\u884c\u4e3a\uff0c\u53ef\u4ee5\u63d0\u4f9b\u663e\u7740\u7684\u6027\u80fd\u4f18\u52bf\u3002<\/p>\n<h4><strong>\u81ea\u52a8\u5185\u5b58\u7ba1\u7406<\/strong><\/h4>\n<p>.NET \u8fd0\u884c\u65f6\u901a\u8fc7\u5783\u573e\u6536\u96c6\u5668 (GC) \u63d0\u4f9b\u81ea\u52a8\u5185\u5b58\u7ba1\u7406\u3002\u5bf9\u4e8e\u4efb\u4f55\u8bed\u8a00\uff0c\u5176\u5185\u5b58\u7ba1\u7406\u6a21\u578b\u53ef\u80fd\u662f\u5176\u6700\u5177\u51b3\u5b9a\u6027\u7684\u7279\u5f81\u3002.NET \u8bed\u8a00\u4e5f\u662f\u5982\u6b64\u3002<\/p>\n<p>\u5de5\u7a0b\u5e08\u82b1\u8d39\u6570\u5468\u751a\u81f3\u6570\u6708\u7684\u65f6\u95f4\u6765\u8ffd\u8e2a\u8fd9\u4e9b\u95ee\u9898\u7684\u60c5\u51b5\u5e76\u4e0d\u5c11\u89c1\u3002\u8bb8\u591a\u8bed\u8a00\u4f7f\u7528\u5783\u573e\u6536\u96c6\u5668\u4f5c\u4e3a\u6d88\u9664\u8fd9\u4e9b\u9519\u8bef\u7684\u7528\u6237\u53cb\u597d\u65b9\u5f0f\uff0c\u56e0\u4e3a GC \u786e\u4fdd\u6b63\u786e\u7684\u5bf9\u8c61\u751f\u547d\u5468\u671f\u3002\u901a\u5e38\uff0cGC \u4f1a\u5206\u6279\u91ca\u653e\u5185\u5b58\u4ee5\u9ad8\u6548\u8fd0\u884c\u3002\u8fd9\u4f1a\u5bfc\u81f4\u6682\u505c\uff0c\u5982\u679c\u60a8\u5bf9\u5ef6\u8fdf\u8981\u6c42\u975e\u5e38\u4e25\u683c\uff0c\u8fd9\u53ef\u80fd\u4e0d\u9002\u5408\uff0c\u5e76\u4e14\u5185\u5b58\u4f7f\u7528\u7387\u4f1a\u66f4\u9ad8\u3002GC \u5f80\u5f80\u5177\u6709\u66f4\u597d\u7684<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/en.wikipedia.org\/wiki\/Locality_of_reference\">\u5185\u5b58\u5c40\u90e8\u6027<\/a>\uff0c\u5e76\u4e14\u67d0\u4e9b GC \u80fd\u591f\u538b\u7f29\u5806\uff0c\u4f7f\u5176\u4e0d\u6613\u4ea7\u751f<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/en.wikipedia.org\/wiki\/Fragmentation_(computing)\">\u5185\u5b58\u788e\u7247<\/a>\u3002<\/p>\n<p>.NET \u5177\u6709\u81ea\u6211\u8c03\u6574\u3001<a href=\"https:\/\/translate.google.com\/website?sl=auto&amp;tl=zh-CN&amp;hl=en-US&amp;client=webapp&amp;u=https:\/\/en.wikipedia.org\/wiki\/Tracing_garbage_collection\">\u8ddf\u8e2a GC<\/a>\u3002\u5b83\u65e8\u5728\u5728\u4e00\u822c\u60c5\u51b5\u4e0b\u63d0\u4f9b\u201c\u653e\u624b\u201d\u64cd\u4f5c\uff0c\u540c\u65f6\u4e3a\u66f4\u6781\u7aef\u7684\u5de5\u4f5c\u8d1f\u8f7d\u63d0\u4f9b\u914d\u7f6e\u9009\u9879\u3002GC \u662f\u591a\u5e74\u6295\u8d44\u3001\u6539\u8fdb\u548c\u4ece\u591a\u79cd\u5de5\u4f5c\u8d1f\u8f7d\u4e2d\u5b66\u4e60\u7684\u7ed3\u679c\u3002<\/p>\n<p><strong>Bump<\/strong><strong>\u6307\u9488\u5206\u914d<\/strong>\u2014\u2014\u901a\u8fc7\u6307\u9488\u9012\u589e\u6240\u9700\u7684\u5927\u5c0f\u5206\u914d\u5bf9\u8c61\uff08\u800c\u4e0d\u662f\u5728\u5206\u79bb\u7684\u7a7a\u95f2\u5757\u4e2d\u5bfb\u627e\u7a7a\u95f4\uff09\uff0c\u56e0\u6b64\u4e00\u8d77\u5206\u914d\u7684\u5bf9\u8c61\u5f80\u5f80\u4f1a\u5728\u4e00\u8d77\u3002\u7531\u4e8e\u7528\u6237\u7ecf\u5e38\u4e00\u8d77\u8bbf\u95ee\u4e0d\u540c\u5bf9\u8c61\uff0c\u8fd9\u6837\u505a\u53ef\u4ee5\u5b9e\u73b0\u66f4\u597d\u7684\u5185\u5b58\u5c40\u90e8\u6027<a href=\"https:\/\/en.wikipedia.org\/wiki\/Locality_of_reference\">memory locality<\/a>\u00a0\uff0c\u8fd9\u6709\u5229\u4e8e\u4fdd\u8bc1\u6027\u80fd\u3002<\/p>\n<p><strong>\u5206\u4ee3\u6536\u96c6<\/strong>\u2014\u2014\u5bf9\u8c61\u751f\u547d\u5468\u671f\u9075\u5faa\u5206\u4ee3\u5047\u8bbe<a href=\"https:\/\/en.wikipedia.org\/wiki\/Tracing_garbage_collection#Generational_GC_(ephemeral_GC)\">generational hypothesis<\/a>\u662f\u975e\u5e38\u5e38\u89c1\u7684\uff0c\u5bf9\u8c61\u751f\u5b58\u5468\u671f\u8981\u4e48\u5f88\u957f\uff0c\u8981\u4e48\u5f88\u77ed\u3002\u56e0\u6b64\uff0c\u5bf9\u4e8e GC \u6765\u8bf4\uff0c\u5982\u679c\u5927\u90e8\u5206\u8fd0\u884c\u65f6\u53ea\u6536\u96c6\u4e34\u65f6\u5bf9\u8c61\u5360\u7528\u7684\u5185\u5b58\uff08\u79f0\u4e3a\u4e34\u65f6 GC \uff09\uff0c\u800c\u4e0d\u662f\u6bcf\u6b21\u8fd0\u884c\u65f6\u90fd\u5fc5\u987b\u6536\u96c6\u6574\u4e2a\u5806\uff08\u79f0\u4e3a\u5b8c\u6574 GC \uff09\uff0c\u90a3\u4e48\u6548\u7387\u5c31\u8981\u9ad8\u5f97\u591a\u3002<\/p>\n<p><strong>\u538b\u7f29<\/strong>\u2014\u2014\u76f8\u540c\u6570\u91cf\u7684\u53ef\u7528\u7a7a\u95f4\u5728\u9762\u79ef\u5927\u800c\u6570\u91cf\u5c11\u7684\u5757\u4e2d\u6bd4\u5728\u9762\u79ef\u5c0f\u548c\u6570\u91cf\u591a\u7684\u5757\u4e2d\u66f4\u6709\u7528\u3002\u5728\u538b\u7f29 GC \u671f\u95f4\uff0c\u4ecd\u7136\u5b58\u5728\u7684\u5bf9\u8c61\u4f1a\u88ab\u79fb\u52a8\u5230\u4e00\u8d77\uff0c\u7531\u6b64\u53ef\u4ee5\u5f62\u6210\u66f4\u5927\u7684\u81ea\u7531\u7a7a\u95f4\u3002\u8fd9\u79cd\u884c\u4e3a\u9700\u8981\u6bd4\u975e\u79fb\u52a8 GC \u66f4\u590d\u6742\u7684\u5b9e\u73b0\uff0c\u56e0\u4e3a\u5b83\u9700\u8981\u66f4\u65b0\u5bf9\u8fd9\u4e9b\u79fb\u52a8\u5bf9\u8c61\u7684\u5f15\u7528\u3002.NET GC \u88ab\u52a8\u6001\u8c03\u6574\u4e3a\u4ec5\u5728\u786e\u5b9a\u56de\u6536\u7684\u5185\u5b58\u9ad8\u4e8e GC \u6210\u672c\u65f6\u624d\u6267\u884c\u538b\u7f29\u3002\u8fd9\u610f\u5473\u7740\u4e34\u65f6\u96c6\u5408\u901a\u5e38\u4f1a\u88ab\u538b\u7f29\u3002<\/p>\n<p><strong>\u5e76\u884c<\/strong>\u2014\u2014GC \u5de5\u4f5c\u53ef\u4ee5\u5728\u5355\u4e2a\u7ebf\u7a0b\u6216\u591a\u4e2a\u7ebf\u7a0b\u4e0a\u8fd0\u884c\u3002Workstation flavor\u5728\u5355\u4e2a\u7ebf\u7a0b\u4e0a\u8fdb\u884c GC\uff0c\u800c Server flavor\u5728\u591a\u4e2a GC \u7ebf\u7a0b\u4e0a\u8fdb\u884c\uff0c\u8fd9\u6837\u53ef\u4ee5\u66f4\u5feb\u7ed3\u675f\u4f5c\u4e1a\u3002\u670d\u52a1\u5668 GC \u8fd8\u53ef\u4ee5\u9002\u5e94\u66f4\u5927\u7684\u5206\u914d\u7387\uff0c\u56e0\u4e3a\u6709\u591a\u4e2a\u5806\u4f9b\u5e94\u7528\u7a0b\u5e8f\u5206\u914d\uff0c\u56e0\u6b64\u5b83\u5bf9\u541e\u5410\u91cf\u9002\u5e94\u6027\u4e5f\u5f88\u597d\u3002<\/p>\n<p><strong>\u5e76\u53d1<\/strong>\u2014\u2014\u5728\u7528\u6237\u7ebf\u7a0b\u6682\u505c\u65f6\u8fdb\u884c GC \u5de5\u4f5c\u79f0\u4e3a<a href=\"https:\/\/en.wikipedia.org\/wiki\/Tracing_garbage_collection#Stop-the-world_vs._incremental_vs._concurrent\">Stop-The-World<\/a>\u00a0\uff0c\u8fd9\u6837\u4f7f\u5b9e\u73b0\u9700\u6c42\u66f4\u7b80\u5355\uff0c\u4f46\u8fd9\u4e9b\u6682\u505c\u53ef\u80fd\u662f\u5bf9\u4e8eGC\u6765\u8bf4\u662f\u4e0d\u53ef\u63a5\u53d7\u7684\u3002.NET \u63d0\u4f9b\u00a0<a href=\"https:\/\/github.com\/Maoni0\/mem-doc\/blob\/master\/doc\/.NETMemoryPerformanceAnalysis.md#Concurrent-GCBackground-GC\">concurrent flavor<\/a>\u00a0\u6765\u7f13\u89e3\u8be5\u95ee\u9898\u3002<\/p>\n<p><strong>\u56fa\u5b9a<\/strong>\u2014 .NET GC \u652f\u6301\u5bf9\u8c61\u56fa\u5b9a\uff0c\u5b83\u53ef\u4ee5\u5b9e\u73b0\u4e0e\u672c\u673a\u4ee3\u7801\u7684\u96f6\u62f7\u8d1d\u4e92\u64cd\u4f5c\u3002\u6b64\u529f\u80fd\u53ef\u5b9e\u73b0\u9ad8\u6027\u80fd\u548c\u9ad8\u4fdd\u771f\u5ea6\u7684\u672c\u673a\u4e92\u64cd\u4f5c\uff0c\u540c\u65f6\u9650\u5236GC\u3002<\/p>\n<p><strong>\u72ec\u7acb<\/strong><strong> GC<\/strong> \u2014 \u53ef\u4ee5\u4f7f\u7528\u5177\u6709\u4e0d\u540c\u673a\u5236\u7684\u72ec\u7acb GC\uff08\u901a\u8fc7\u914d\u7f6e\u6307\u5b9a\u5e76\u6ee1\u8db3<a href=\"https:\/\/github.com\/dotnet\/runtime\/blob\/main\/src\/coreclr\/gc\/gcinterface.h\">interface requirements<\/a>)\u3002\u8fd9\u6837\u4e00\u6765\uff0c\u8c03\u67e5\u548c\u5c1d\u8bd5\u65b0\u529f\u80fd\u5c31\u66f4\u5bb9\u6613\u4e86\u3002<\/p>\n<p><strong>\u8bca\u65ad<\/strong>\u2014\u2014GC \u63d0\u4f9b\u6709\u5173\u5185\u5b58\u548c\u96c6\u5408\u7684\u5927\u91cf\u4fe1\u606f\uff0c\u8fd9\u5141\u8bb8\u60a8\u5c06\u6570\u636e\u4e0e\u7cfb\u7edf\u7684\u5176\u4f59\u90e8\u5206\u76f8\u5173\u8054\u3002\u4f8b\u5982\uff0c\u60a8\u53ef\u4ee5\u901a\u8fc7\u6355\u83b7 GC \u4e8b\u4ef6\u5e76\u5c06\u5b83\u4eec\u4e0e\u5176\u4ed6\u4e8b\u4ef6\uff08\u5982 IO\uff09\u76f8\u5173\u8054\u6765\u8bc4\u4f30<a href=\"https:\/\/github.com\/Maoni0\/mem-doc\/blob\/master\/doc\/.NETMemoryPerformanceAnalysis.md#measure-the-impact-of-factors-that-likely-affect-your-perf-metrics\">GC impact of your tail latency<\/a>\u00a0\u5c3e\u90e8\u5ef6\u8fdf\u5bf9 GC \u7684\u5f71\u54cd\uff0c\u4ee5\u8ba1\u7b97 GC \u5bf9\u5176\u4ed6\u56e0\u7d20\u7684\u5f71\u54cd\u7a0b\u5ea6\uff0c\u8fd9\u6837\u60a8\u5c31\u53ef\u4ee5\u5c06\u7cbe\u529b\u96c6\u4e2d\u5728\u7ec8\u4e8e\u7684\u7ec4\u4ef6\u4e0a\u3002<\/p>\n<h4><strong>\u5b89\u5168<\/strong><\/h4>\n<p>.NET. \u7f16\u7a0b\u5b89\u5168\u4e00\u76f4\u662f\u8fc7\u53bb\u5341\u5e74\u7684\u70ed\u95e8\u8bdd\u9898\u4e4b\u4e00\u3002\u5b83\u662f .NET \u7b49\u6258\u7ba1\u73af\u5883\u7684\u56fa\u6709\u7ec4\u4ef6\u3002<\/p>\n<p>\u5b89\u5168\u5f62\u5f0f\uff1a<\/p>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Type_safety\">Type safety<\/a>\u7c7b\u578b\u5b89\u5168\u00a0\u2014 \u4e0d\u80fd\u4f7f\u7528\u4efb\u610f\u7c7b\u578b\u4ee3\u66ff\u53e6\u4e00\u4e2a\u7c7b\u578b\uff0c\u907f\u514d\u672a\u5b9a\u4e49\u7684\u884c\u4e3a\u3002<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Memory_safety\">Memory safety<\/a>\u5185\u5b58\u5b89\u5168\u00a0\u2014 \u4e0d\u80fd\u4f7f\u7528\u4efb\u610f\u7c7b\u578b\u4ee3\u66ff\u53e6\u4e00\u4e2a\u7c7b\u578b\uff0c\u907f\u514d\u672a\u5b9a\u4e49\u7684\u884c\u4e3a\u3002<a href=\"https:\/\/en.wikipedia.org\/wiki\/Thread_safety\">Concurrency or thread safety<\/a>\u5e76\u53d1\u6216\u7ebf\u7a0b\u5b89\u5168\u00a0\u2014 \u4e0d\u80fd\u4f7f\u7528\u4efb\u610f\u7c7b\u578b\u4ee3\u66ff\u53e6\u4e00\u4e2a\u7c7b\u578b\uff0c\u907f\u514d\u672a\u5b9a\u4e49\u7684\u884c\u4e3a\u3002<\/li>\n<\/ul>\n<p>\u6ce8\uff1a\u7f8e\u56fd\u8054\u90a6\u653f\u5e9c\u6700\u8fd1\u53d1\u5e03\u4e86\u5173\u4e8e<a href=\"https:\/\/www.nsa.gov\/Press-Room\/News-Highlights\/Article\/Article\/3215760\/nsa-releases-guidance-on-how-to-protect-against-software-memory-safety-issues\/\">importance of memory safety<\/a><a href=\"https:\/\/translate.google.com\/website?sl=en&amp;tl=zh-CN&amp;hl=en&amp;u=https:\/\/www.nsa.gov\/Press-Room\/News-Highlights\/Article\/Article\/3215760\/nsa-releases-guidance-on-how-to-protect-against-software-memory-safety-issues\/\">\u5185\u5b58\u5b89\u5168\u91cd\u8981\u6027\u7684<\/a>\u6307\u5357\u3002<\/p>\n<p>.NET \u4ece\u6700\u521d\u7684\u8bbe\u8ba1\u5f00\u59cb\u5c31\u88ab\u8bbe\u8ba1\u6210\u4e00\u4e2a\u4fdd\u8bc1\u5b89\u5168\u7684\u5e73\u53f0\u3002\u7279\u522b\u9700\u8981\u6307\u51fa\u7684\u662f\uff0c\u5b83\u65e8\u5728\u542f\u7528\u65b0\u4e00\u4ee3 Web \u670d\u52a1\u5668\uff0c\u8fd9\u4e9b\u670d\u52a1\u5668\u4e00\u76f4\u9700\u8981\u5728\u4e16\u754c\u4e0a\u6700\u6076\u52a3\u7684\u8ba1\u7b97\u73af\u5883\uff08Internet\uff09\u4e2d\u63a5\u53d7\u4e0d\u53d7\u4fe1\u4efb\u7684\u8f93\u5165\u7684\u8003\u9a8c\u3002\u73b0\u5728\u666e\u904d\u8ba4\u4e3a\u7f51\u7edc\u7a0b\u5e8f\u5e94\u8be5\u7528\u5b89\u5168\u7684\u8bed\u8a00\u7f16\u5199\u3002<\/p>\n<p>\u7c7b\u578b\u5b89\u5168\u7531\u8bed\u8a00\u548c\u8fd0\u884c\u65f6\u6a21\u5757\u540c\u65f6\u5f3a\u5236\u6267\u884c\u3002\u7f16\u8bd1\u5668\u9a8c\u8bc1\u9759\u6001\u4e0d\u53d8\u91cf\uff0c\u4f8b\u5982\u5206\u914d\u4e0d\u540c\u7684\u7c7b\u578b\u2014\u2014\u4f8b\u5982\uff0c\u5206\u914dstring\u7ed9Stream\u2014\u2014\u8fd9\u5c06\u5bfc\u81f4\u7f16\u8bd1\u5668\u4e2d\u4ea7\u751f\u9519\u8bef\u3002\u8fd0\u884c\u65f6\u9a8c\u8bc1\u52a8\u6001\u4e0d\u53d8\u91cf\uff0c\u4f8b\u5982\u4e0d\u540c\u7c7b\u578b\u4e4b\u95f4\u7684\u8f6c\u6362\uff0c\u5c31\u5c06\u4ea7\u751f<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.invalidcastexception\">InvalidCastException<\/a>.<\/p>\n<p>\u5185\u5b58\u5b89\u5168\u4e3b\u8981\u7531\u4ee3\u7801\u751f\u6210\u5668\uff08\u5982 JIT\uff09\u548c\u5783\u573e\u6536\u96c6\u5668\u5408\u4f5c\u5b9e\u73b0\u3002\u53d8\u91cf\u5f15\u7528\u503c\u8981\u4e48\u662f\u6d3b\u52a8\u5bf9\u8c61\uff0c\u8981\u4e48\u662fnull\uff0c\u8981\u4e48\u8d85\u51fa\u8303\u56f4\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u5185\u5b58\u662f\u81ea\u52a8\u521d\u59cb\u5316\u7684\uff0c\u8fd9\u6837\u65b0\u5bf9\u8c61\u5c31\u4e0d\u4f1a\u4f7f\u7528\u672a\u521d\u59cb\u5316\u7684\u5185\u5b58\u3002\u8fb9\u754c\u68c0\u67e5\u7981\u6b62\u8bbf\u95ee\u6570\u7ec4\u4e2d\u65e0\u6548\u7d22\u5f15\u7684\u5143\u7d20\u8bfb\u53d6\u672a\u5b9a\u4e49\u7684\u5185\u5b58\u2014\u2014\u901a\u5e38\u7531\u4e00\u4e2a\u5355\u4f4d\u7684\u9519\u8bef\u504f\u79fb\u5f15\u8d77\u2014\u2014\u8fd9\u4f1a\u5bfc\u81f4<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.indexoutofrangeexception\">IndexOutOfRangeException<\/a>\u3002<\/p>\n<p>Cnull\u5904\u7406\u662f\u4fdd\u8bc1\u5185\u5b58\u5b89\u5168\u7684\u4e00\u79cd\u7279\u6b8a\u5f62\u5f0f\u3002\u53ef\u7a7a\u5f15\u7528\u7c7b\u578b<a href=\"https:\/\/learn.microsoft.com\/dotnet\/csharp\/nullable-references\">Nullable reference types<\/a>\u00a0\u662f\u4e00\u79cd C# \u8bed\u8a00\u548c\u7f16\u8bd1\u5668\u529f\u80fd\uff0c\u53ef\u9759\u6001\u6807\u8bc6\u672a\u5b89\u5168\u5904\u7406\u7684\u4ee3\u7801null\u3002\u7279\u522b\u662f\uff0c\u5982\u679c\u60a8\u53d6\u6d88\u5f15\u7528\u53ef\u80fd\u4e3a null \u7684\u53d8\u91cf\uff0c\u7f16\u8bd1\u5668\u4f1a\u53d1\u51fa\u8b66\u544a\u3002\u60a8\u8fd8\u53ef\u4ee5\u7981\u6b62null\u8d4b\u503c\uff0c\u8fd9\u6837\u7f16\u8bd1\u5668\u4f1a\u5728\u60a8\u53ef\u80fd\u7ed9\u53d8\u91cf\u8d4b\u7a7a\u503c\u65f6\u53d1\u51fa\u8b66\u544a\u3002\u8fd0\u884c\u65f6\u5177\u6709\u5339\u914d\u7684\u52a8\u6001\u9a8c\u8bc1\u529f\u80fd\uff0c\u53ef\u901a\u8fc7\u629b\u51fa<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.nullreferenceexception\">NullReferenceException<\/a>\u6765\u9632\u6b62\u5f15\u7528\u88ab\u8bbf\u95ee\u3002<\/p>\n<p>C# \u529f\u80fd\u4f9d\u8d56\u4e8e\u5e93\u4e2d\u53ef\u4e3a\u7a7a\u7684\u5c5e\u6027<a href=\"https:\/\/learn.microsoft.com\/dotnet\/csharp\/language-reference\/attributes\/nullable-analysis\">nullable attributes<\/a>\u00a0\u3002 \u5b83\u8fd8\u4f9d\u8d56\u4e8e\u5b83\u4eec\u5728\u5e93\u548c\u5e94\u7528\u7a0b\u5e8f\u5806\u6808\uff08\u6211\u4eec\u5df2\u7ecf\u5b8c\u6210\uff09\u4e2d\u7684\u8be6\u5c3d\u5e94\u7528\uff0c\u4ee5\u4fbf\u4e3a\u60a8\u7684\u4ee3\u7801\u63d0\u4f9b\u6765\u81ea\u9759\u6001\u5206\u6790\u5de5\u5177\u7684\u51c6\u786e\u7ed3\u679c\u3002<\/p>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\">string? SomeMethod() =&gt; null;\r\nstring value = SomeMethod() ?? \"default string\";<\/code><\/pre>\n<p>\u6b64\u4ee3\u7801\u88ab C# \u7f16\u8bd1\u5668\u89c6\u4e3a null \u5b89\u5168\u7684\uff0c\u56e0\u4e3anull \u662f\u7528\u6765\u58f0\u660e\u548c\u5904\u7406\u7684\uff0c\u90e8\u5206\u7531??\u5b9e\u73b0<a href=\"https:\/\/learn.microsoft.com\/dotnet\/csharp\/language-reference\/operators\/null-coalescing-operator\">null coalescing operator<\/a><a href=\"https:\/\/translate.google.com\/website?sl=en&amp;tl=zh-CN&amp;hl=en&amp;u=https:\/\/learn.microsoft.com\/dotnet\/csharp\/language-reference\/operators\/null-coalescing-operator\">\u5408\u5e76\u8fd0\u7b97\u7b26<\/a>\u3002\u8be5value\u53d8\u91cf\u5c06\u59cb\u7ec8\u4e3a\u975e\u7a7a\uff0c\u4e0e\u5176\u58f0\u660e\u76f8\u5339\u914d\u3002<\/p>\n<p>.NET \u4e2d\u6ca1\u6709\u5185\u7f6e\u7684\u5e76\u53d1\u5b89\u5168\u3002\u76f8\u53cd\uff0c\u5f00\u53d1\u4eba\u5458\u9700\u8981\u9075\u5faa\u6a21\u5f0f\u548c\u7ea6\u5b9a\u6765\u907f\u514d\u672a\u5b9a\u4e49\u7684\u884c\u4e3a\u3002.NET \u751f\u6001\u7cfb\u7edf\u4e2d\u8fd8\u6709\u5206\u6790\u5668\u548c\u5176\u4ed6\u5de5\u5177\uff0c\u53ef\u4ee5\u6df1\u5165\u4e86\u89e3\u5e76\u53d1\u95ee\u9898\u3002\u6838\u5fc3\u5e93\u5305\u62ec\u591a\u79cd\u53ef\u4ee5\u5b89\u5168\u5e76\u53d1\u4f7f\u7528\u7684\u7c7b\u578b\u548c\u65b9\u6cd5\uff0c\u4f8b\u5982\u652f\u6301\u4efb\u610f\u6570\u91cf\u7684\u5e76\u53d1\u8bfb\u53d6\u5668\u548c\u5199\u5165\u5668\u800c\u4e0d\u4f1a\u5192\u6570\u636e\u7ed3\u6784\u635f\u574f\u98ce\u9669\u7684<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.collections.concurrent\">concurrent collections<\/a><a href=\"https:\/\/translate.google.com\/website?sl=en&amp;tl=zh-CN&amp;hl=en&amp;u=https:\/\/learn.microsoft.com\/dotnet\/api\/system.collections.concurrent\">\u5e76\u53d1\u96c6\u5408\u3002<\/a><\/p>\n<p>\u8fd0\u884c\u65f6\u516c\u5f00\u5b89\u5168\u548c<a href=\"https:\/\/learn.microsoft.com\/dotnet\/csharp\/language-reference\/unsafe-code\">unsafe code<\/a><a href=\"https:\/\/translate.google.com\/website?sl=en&amp;tl=zh-CN&amp;hl=en&amp;u=https:\/\/learn.microsoft.com\/dotnet\/csharp\/language-reference\/unsafe-code\">\u4e0d\u5b89\u5168\u7684\u4ee3\u7801<\/a>\u6a21\u578b\u3002\u5b89\u5168\u4ee3\u7801\u7684\u5b89\u5168\u6027\u5f97\u5230\u4fdd\u8bc1\uff0c\u8fd9\u662f\u9ed8\u8ba4\u8bbe\u7f6e\uff0c\u800c\u5f00\u53d1\u4eba\u5458\u5fc5\u987b\u9009\u62e9\u4f7f\u7528\u4e0d\u5b89\u5168\u4ee3\u7801\u3002\u4e0d\u5b89\u5168\u4ee3\u7801\u901a\u5e38\u7528\u4e8e\u4e0e\u5e95\u5c42\u5e73\u53f0\u4e92\u64cd\u4f5c\u3001\u4e0e\u786c\u4ef6\u4ea4\u4e92\u6216\u5bf9\u6027\u80fd\u5173\u952e\u8def\u5f84\u5b9e\u65bd\u624b\u52a8\u4f18\u5316\u3002<\/p>\n<p>\u6c99<a href=\"https:\/\/translate.google.com\/website?sl=en&amp;tl=zh-CN&amp;hl=en&amp;u=https:\/\/en.wikipedia.org\/wiki\/Sandbox_(computer_security)\">\u7bb1<\/a><a href=\"https:\/\/en.wikipedia.org\/wiki\/Sandbox_(computer_security)\">sandbox<\/a>\u662f\u4e00\u79cd\u7279\u6b8a\u7684\u5b89\u5168\u5f62\u5f0f\uff0c\u5b83\u63d0\u4f9b\u9694\u79bb\u5e76\u9650\u5236\u7ec4\u4ef6\u4e4b\u95f4\u7684\u8bbf\u95ee\u3002\u6211\u4eec\u4f9d\u8d56\u6807\u51c6\u7684\u9694\u79bb\u6280\u672f\uff0c\u5982\u8fdb\u7a0b\uff08\u548c CGroups\uff09\u3001\u865a\u62df\u673a\u548c WebAssembly\uff08\u5177\u6709\u4e0d\u540c\u7684\u7279\u6027\uff09\u3002<\/p>\n<h4><strong>\u9519\u8bef\u5904\u7406<\/strong><\/h4>\n<p>\u5f02\u5e38\u662f .NET \u4e2d\u7684\u4e3b\u8981\u9519\u8bef\u5904\u7406\u6a21\u578b\u3002\u5f02\u5e38\u7684\u597d\u5904\u662f\u9519\u8bef\u4fe1\u606f\u4e0d\u9700\u8981\u5728\u65b9\u6cd5\u7b7e\u540d\u4e2d\u8868\u793a\u6216\u7531\u6bcf\u4e2a\u65b9\u6cd5\u5904\u7406\u3002<\/p>\n<p>\u4e0b\u9762\u7684\u4ee3\u7801\u6f14\u793a\u4e86\u4e00\u4e2a\u5178\u578b\u7684\u6a21\u5f0f\uff1a<\/p>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\">try\r\n{\r\n    var lines = await File.ReadAllLinesAsync(file);\r\n    Console.WriteLine($\"The {file} has {lines.Length} lines.\");\r\n}\r\ncatch (Exception e) when (e is FileNotFoundException or DirectoryNotFoundException)\r\n{\r\n    Console.WriteLine($\"{file} doesn't exist.\");\r\n}<\/code><\/pre>\n<p>\u6b63\u786e\u7684\u5f02\u5e38\u5904\u7406\u5bf9\u4e8e\u5e94\u7528\u7a0b\u5e8f\u7684\u53ef\u9760\u6027\u81f3\u5173\u91cd\u8981\u3002\u53ef\u4ee5\u5728\u7528\u6237\u4ee3\u7801\u4e2d\u6709\u610f\u5904\u7406\u9884\u671f\u7684\u5f02\u5e38\uff0c\u5426\u5219\u5e94\u7528\u7a0b\u5e8f\u5c31\u4f1a\u5d29\u6e83\u3002\u5d29\u6e83\u7684\u5e94\u7528\u7a0b\u5e8f\u6bd4\u5177\u6709\u672a\u5b9a\u4e49\u884c\u4e3a\u7684\u5e94\u7528\u7a0b\u5e8f\u66f4\u53ef\u9760\u3002\u5f53\u60a8\u60f3\u627e\u51fa\u95ee\u9898\u7684\u6839\u672c\u539f\u56e0\u65f6\uff0c\u5b83\u4e5f\u66f4\u5bb9\u6613\u8bca\u65ad\u3002<\/p>\n<p>\u5f02\u5e38\u4ece\u9519\u8bef\u70b9\u629b\u51fa\uff0c\u5e76\u81ea\u52a8\u6536\u96c6\u6709\u5173\u7a0b\u5e8f\u72b6\u6001\u7684\u9644\u52a0\u8bca\u65ad\u4fe1\u606f\u3002\u8fd9\u4e9b\u4fe1\u606f\u53ef\u7528\u4e8e\u4ea4\u4e92\u5f0f\u8c03\u8bd5\u3001\u5e94\u7528\u7a0b\u5e8f\u53ef\u89c2\u5bdf\u6027\u548c\u4e8b\u540e\u8c03\u8bd5\u3002\u8fd9\u4e9b\u8bca\u65ad\u65b9\u6cd5\u4e2d\u7684\u6bcf\u4e00\u79cd\u90fd\u4f9d\u8d56\u4e8e\u8bbf\u95ee\u5927\u91cf\u7684\u9519\u8bef\u4fe1\u606f\u548c\u5e94\u7528\u7a0b\u5e8f\u72b6\u6001\u6765\u8bca\u65ad\u95ee\u9898\u3002<\/p>\n<p>\u5f02\u5e38\u662f\u4e3a\u7f55\u89c1\u7684\u60c5\u51b5\u800c\u8bbe\u8ba1\u7684\u3002\u8fd9\u5728\u4e00\u5b9a\u7a0b\u5ea6\u4e0a\u662f\u56e0\u4e3a\u5b83\u4eec\u7684\u6027\u80fd\u6210\u672c\u76f8\u5bf9\u8f83\u9ad8\u3002\u5b83\u4eec\u4e0d\u6253\u7b97\u7528\u4e8e\u63a7\u5236\u6d41\uff0c\u5373\u4f7f\u5b83\u4eec\u6709\u65f6\u4ee5\u8fd9\u79cd\u65b9\u5f0f\u4f7f\u7528\u3002<\/p>\n<p>\u5f02\u5e38\uff08\u6709\u4e00\u90e8\u5206\uff09\u4f9d\u8d56\u4e8e\u53d6\u6d88\u3002\u4e00\u65e6\u89c2\u5bdf\u5230\u53d6\u6d88\u8bf7\u6c42\uff0c\u5b83\u4eec\u5c31\u53ef\u4ee5\u6709\u6548\u5730\u505c\u6b62\u6267\u884c\u5e76\u5c55\u5f00\u6b63\u5728\u8fdb\u884c\u7684\u8c03\u7528\u5806\u6808\u3002<\/p>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\">try \r\n{ \r\n    await source.CopyToAsync(destination, cancellationToken); \r\n} \r\ncatch (OperationCanceledException) \r\n{ \r\n    Console.WriteLine(\"Operation was canceled\"); \r\n}<\/code><\/pre>\n<p>.NET \u8bbe\u8ba1\u6a21\u5f0f\u5305\u62ec\u66ff\u4ee3\u5f62\u5f0f\u7684\u9519\u8bef\u5904\u7406\uff0c\u4ee5\u5e94\u5bf9\u5f02\u5e38\u7684\u6027\u80fd\u6210\u672c\u8fc7\u9ad8\u7684\u60c5\u51b5\u3002\u4f8b\u5982\uff0c<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.int32.tryparse\">int.TryParse<\/a>\u8fd4\u56de\u6210\u529f\u65f6\u5176\u53c2\u6570\u5305\u542b\u5df2\u89e3\u6790\u7684\u6709\u6548\u6574\u6570\uff0c<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.collections.generic.dictionary-2.trygetvalue\">Dictionary&lt;TKey,\u00a0TValue&gt;.TryGetValue<\/a>\u63d0\u4f9b\u4e86\u4e00\u4e2a\u7c7b\u4f3c\u7684\u6a21\u578b\uff0c\u8fd4\u56de\u4e00\u4e2a\u6709\u6548TValue\u7c7b\u578b\u4f5c\u4e3a\u6848\u4f8b\u4e2d\u7684\u53c2\u6570\u7b49<\/p>\n<p>\u9519\u8bef\u5904\u7406\u548c\u66f4\u666e\u904d\u7684\u8bca\u65ad\u662f\u901a\u8fc7\u4f4e\u7ea7\u8fd0\u884c\u65f6 API\u3001,\u00a0<a href=\"https:\/\/opentelemetry.io\/docs\/instrumentation\/net\/\">higher-level libraries<\/a>, \u548c<a href=\"https:\/\/learn.microsoft.com\/dotnet\/core\/diagnostics\/#net-core-diagnostic-global-tools\">tools<\/a>\u5b9e\u73b0\u7684\u3002\u8fd9\u4e9b\u529f\u80fd\u65e8\u5728\u652f\u6301\u66f4\u65b0\u7684\u90e8\u7f72\u9009\u9879\uff0c\u4f8b\u5982\u5bb9\u5668\u3002\u4f8b\u5982\uff0c<a href=\"https:\/\/learn.microsoft.com\/dotnet\/core\/diagnostics\/dotnet-monitor\">dotnet-monitor<\/a>\u53ef\u4ee5\u901a\u8fc7\u5185\u7f6e\u7684\u9762\u5411\u8bca\u65ad\u7684 Web \u670d\u52a1\u5668\u5c06\u8fd0\u884c\u65f6\u6570\u636e\u4ece\u5e94\u7528\u5bfc\u51fa\u5230\u4fa6\u542c\u5668\u3002<\/p>\n<h4><strong>\u5e76\u53d1<\/strong><\/h4>\n<p>\u652f\u6301\u540c\u65f6\u505a\u591a\u4ef6\u4e8b\u662f\u51e0\u4e4e\u6240\u6709\u5de5\u4f5c\u8d1f\u8f7d\u7684\u57fa\u7840\uff0c\u65e0\u8bba\u662f\u5728\u4fdd\u6301 UI \u54cd\u5e94\u7684\u540c\u65f6\u8fdb\u884c\u540e\u53f0\u5904\u7406\u7684\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f\u3001\u5904\u7406\u6210\u5343\u4e0a\u4e07\u540c\u65f6\u8bf7\u6c42\u7684\u670d\u52a1\u3001\u54cd\u5e94\u5927\u91cf\u540c\u65f6\u523a\u6fc0\u7684\u8bbe\u5907\uff0c\u8fd8\u662f\u9ad8\u9a71\u52a8\u7684\u673a\u5668\u5e76\u884c\u5904\u7406\u8ba1\u7b97\u5bc6\u96c6\u578b\u64cd\u4f5c\u3002\u64cd\u4f5c\u7cfb\u7edf\u901a\u8fc7\u7ebf\u7a0b\u4e3a\u8fd9\u79cd\u5e76\u53d1\u6027\u63d0\u4f9b\u652f\u6301\uff0c\u8fd9\u4f7f\u5f97\u591a\u4e2a\u6307\u4ee4\u6d41\u80fd\u591f\u72ec\u7acb\u5904\u7406\uff0c\u64cd\u4f5c\u7cfb\u7edf\u7ba1\u7406\u8fd9\u4e9b\u7ebf\u7a0b\u5728\u673a\u5668\u4e2d\u4efb\u4f55\u53ef\u7528\u5904\u7406\u5668\u5185\u6838\u4e0a\u7684\u6267\u884c\u3002\u64cd\u4f5c\u7cfb\u7edf\u8fd8\u63d0\u4f9b\u5bf9\u6267\u884c I\/O \u7684\u652f\u6301\uff0c\u63d0\u4f9b\u7684\u673a\u5236\u4f7f I\/O \u80fd\u591f\u4ee5\u53ef\u6269\u5c55\u7684\u65b9\u5f0f\u6267\u884c\uff0c\u5e76\u4e14\u5728\u4efb\u4f55\u7279\u5b9a\u65f6\u95f4\u90fd\u6709\u8bb8\u591a\u201c\u8fd0\u884c\u4e2d\u201d\u7684 I\/O \u64cd\u4f5c\u3002<\/p>\n<p>.NET \u901a\u8fc7\u5e93\u548c\u6df1\u5ea6\u96c6\u6210\u5230 C# \u4e2d\uff0c\u5728\u591a\u4e2a\u62bd\u8c61\u7ea7\u522b\u63d0\u4f9b\u6b64\u7c7b\u5e76\u53d1\u548c\u5e76\u884c\u5316\u652f\u6301\u3002\u7ebf\u7a0b<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.threading.thread\">Thread<\/a>\u7c7b\u4f4d\u4e8e\u5c42\u6b21\u7ed3\u6784\u7684\u5e95\u90e8\uff0c\u4ee3\u8868\u4e00\u4e2a\u64cd\u4f5c\u7cfb\u7edf\u7ebf\u7a0b\uff0c\u4f7f\u5f00\u53d1\u4eba\u5458\u80fd\u591f\u521b\u5efa\u65b0\u7ebf\u7a0b\u5e76\u968f\u540e\u52a0\u5165\u5b83\u4eec\u3002\u7ebf\u7a0b\u6c60<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.threading.threadpool\">ThreadPool<\/a>\u4f4d\u4e8e\u7ebf\u7a0b\u4e4b\u4e0a\uff0c\u5141\u8bb8\u5f00\u53d1\u4eba\u5458\u8003\u8651\u5f02\u6b65\u5b89\u6392\u5728\u7ebf\u7a0b\u6c60\u4e0a\u8fd0\u884c\u7684\u5de5\u4f5c\u9879\uff0c\u5e76\u8fd9\u4e9b\u7ebf\u7a0b\u7684\u7ba1\u7406\uff08\u5305\u62ec\u4ece\u6c60\u4e2d\u6dfb\u52a0\u548c\u5220\u9664\u7ebf\u7a0b\uff0c\u4ee5\u53ca\u4e3a\u8fd9\u4e9b\u7ebf\u7a0b\u5206\u914d\u5de5\u4f5c\u9879\uff09\u653e\u5728\u8fd0\u884c\u65f6\u3002<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.threading.tasks.task\">Task<\/a>\u7136\u540e\u4e3a\u4efb\u4f55\u5f02\u6b65\u6267\u884c\u7684\u64cd\u4f5c\u63d0\u4f9b\u7edf\u4e00\u7684\u8868\u793a\u5f62\u5f0f\uff0c\u5e76\u4e14\u53ef\u4ee5\u901a\u8fc7\u591a\u79cd\u65b9\u5f0f\u521b\u5efa\u548c\u8fde\u63a5\uff1b\u4f8b\u5982\uff0cTask.Run\u5141\u8bb8\u5728ThreadPool\u4e0a\u8fd0\u884c\u5b89\u6392\u59d4\u6258\u5e76\u8fd4\u56de Task\u4ee5\u8868\u793a\u8be5\u5de5\u4f5c\u7684\u6700\u7ec8\u5b8c\u6210\uff0c\u540c\u65f6Socket.ReceiveAsync\u8fd4\u56de\u4e00\u4e2aTask&lt;int&gt;\uff08\u6216ValueTask&lt;int&gt;\uff09\u8868\u793a\u5f02\u6b65 I\/O \u7684\u6700\u7ec8\u5b8c\u6210.\u00a0\u63d0\u4f9b\u4e86\u5927\u91cf\u7684\u540c\u6b65\u539f\u8bed\uff0c\u7528\u4e8e\u534f\u8c03\u7ebf\u7a0b\u548c\u5f02\u6b65\u64cd\u4f5c\u4e4b\u95f4\u7684\u540c\u6b65\u548c\u5f02\u6b65\u6d3b\u52a8\uff0c\u5e76\u63d0\u4f9b\u4e86\u5927\u91cf\u9ad8\u7ea7 API \u4ee5\u7b80\u5316\u5e38\u89c1\u5e76\u53d1\u6a21\u5f0f\u7684\u5b9e\u73b0\uff0c\u4f8b\u5982\uff0cSocket<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.threading.tasks.parallel\">Parallel.ForEach<\/a><u>\u548c<\/u>Parallel.ForEachAsync\u4f7f\u5904\u7406\u4e00\u4e2a\u7ebf\u7a0b\u7684\u6240\u6709\u5143\u7d20\u53d8\u5f97\u66f4\u5bb9\u6613\u5b9e\u73b0\u6570\u636e\u5e8f\u5217\u5e76\u884c\u3002<\/p>\n<p>\u5f02\u6b65\u7f16\u7a0b\u652f\u6301\u4e5f\u662f C# \u7f16\u7a0b\u8bed\u8a00\u7684\u4e00\u6d41\u529f\u80fd\uff0c\u5b83\u63d0\u4f9b\u4e86async\u548cawait\u5173\u952e\u5b57\uff0c\u4f7f\u7f16\u5199\u548c\u7ec4\u5408\u5f02\u6b65\u64cd\u4f5c\u53d8\u5f97\u5bb9\u6613\uff0c\u540c\u65f6\u4ecd\u7136\u4eab\u53d7\u8be5\u8bed\u8a00\u5fc5\u987b\u63d0\u4f9b\u7684\u6240\u6709\u63a7\u5236\u6d41\u7ed3\u6784\u7684\u5168\u90e8\u597d\u5904\u3002<\/p>\n<h4><strong>\u53cd\u5c04<\/strong><strong>\u00a0<\/strong><\/h4>\n<p><a href=\"https:\/\/learn.microsoft.com\/dotnet\/framework\/reflection-and-codedom\/reflection\">\u53cd\u5c04<\/a>\u662f\u4e00\u79cd\u201c\u7a0b\u5e8f\u5373\u6570\u636e\u201d\u8303\u4f8b\uff0c\u5b83\u80fd\u8ba9\u7a0b\u5e8f\u7684\u4e00\u90e8\u5206\u6839\u636e<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.reflection%22%20\/t%20%22_blank\">\u7a0b\u5e8f\u96c6\u3001\u7c7b\u578b\u548c\u6210\u5458<\/a>\u52a8\u6001\u67e5\u8be2\u548c\/\u6216\u8c03\u7528\u53e6\u4e00\u90e8\u5206\u3002\u5b83\u5bf9\u4e8e\u540e\u671f\u7ed1\u5b9a\u7f16\u7a0b\u6a21\u578b\u548c\u5de5\u5177\u7279\u522b\u6709\u7528\u3002<\/p>\n<p>\u4ee5\u4e0b\u4ee3\u7801\u4f7f\u7528\u53cd\u5c04\u6765\u67e5\u627e\u548c\u8c03\u7528type\u3002<\/p>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\">foreach (Type type in typeof(Program).Assembly.DefinedTypes)\r\n{\r\n    if (type.IsAssignableTo(typeof(IStory)) &amp;&amp;\r\n        !type.IsInterface)\r\n    {\r\n        IStory? story = (IStory?)Activator.CreateInstance(type);\r\n        if (story is not null)\r\n        {\r\n            var text = story.TellMeAStory();\r\n            Console.WriteLine(text);\r\n        }\r\n    }\r\n}\r\n\r\ninterface IStory\r\n{\r\n    string TellMeAStory();\r\n}\r\n\r\nclass BedTimeStore : IStory\r\n{\r\n    public string TellMeAStory() =&gt; \"Once upon a time, there was an orphan learning magic ...\";\r\n}\r\n\r\nclass HorrorStory : IStory\r\n{\r\n    public string TellMeAStory() =&gt; \"On a dark and stormy night, I heard a strange voice in the cellar ...\";\r\n}<\/code><\/pre>\n<p>\u6b64\u4ee3\u7801\u52a8\u6001\u679a\u4e3e\u5b9e\u73b0\u7279\u5b9a\u63a5\u53e3\u7684\u6240\u6709\u7a0b\u5e8f\u96c6\u7c7b\u578b\uff0c\u5b9e\u4f8b\u5316\u6bcf\u4e2a\u7c7b\u578b\u7684\u5b9e\u4f8b\uff0c\u5e76\u901a\u8fc7\u8be5\u63a5\u53e3\u8c03\u7528\u5bf9\u8c61\u7684\u65b9\u6cd5\u3002\u4ee3\u7801\u672c\u6765\u53ef\u4ee5\u9759\u6001\u7f16\u5199\u7684\uff0c\u56e0\u4e3a\u5b83\u53ea\u67e5\u8be2\u5b83\u6240\u5f15\u7528\u7684\u7a0b\u5e8f\u96c6\u4e2d\u7684\u7c7b\u578b\uff0c\u4f46\u8981\u8fd9\u6837\u505a\uff0c\u9700\u8981\u5c06\u6240\u6709\u5b9e\u4f8b\u7684\u96c6\u5408\uff08\u4e5f\u8bb8\u662f\u4f5c\u4e3a\u4e00\u4e2aList&lt;IStory&gt;\uff09\u4ea4\u7ed9\u5b83\u6765\u5904\u7406\u3002\u5982\u679c\u6b64\u7b97\u6cd5\u4ece\u52a0\u8f7d\u9879\u76ee\u5f55\u52a0\u8f7d\u4efb\u610f\u7a0b\u5e8f\u96c6\uff0c\u5219\u66f4\u6709\u53ef\u80fd\u4f7f\u7528\u8fd9\u79cd\u540e\u671f\u7ed1\u5b9a\u65b9\u6cd5\u3002\u6709\u8fd9\u6837\u4e00\u4e00\u79cd\u60c5\u51b5\uff1a\u60a8\u65e0\u6cd5\u63d0\u524d\u83b7\u53d6\u7a0b\u5e8f\u96c6\u548c\u7c7b\u578b\uff0c\u53cd\u5c04\u901a\u5e38\u5c31\u88ab\u7528\u5728\u8fd9\u6837\u7684\u573a\u666f\u4e2d\u3002<\/p>\n<p>\u53cd\u5c04\u53ef\u80fd\u662f .NET \u4e2d\u63d0\u4f9b\u7684\u6700\u52a8\u6001\u7684\u7cfb\u7edf\u3002\u5b83\u65e8\u5728\u4f7f\u5f00\u53d1\u4eba\u5458\u80fd\u591f\u521b\u5efa\u81ea\u5df1\u7684\u4e8c\u8fdb\u5236\u4ee3\u7801\u52a0\u8f7d\u5668\u548c\u65b9\u6cd5\u5206\u6d3e\u5668\uff0c\u5176\u8bed\u4e49\u53ef\u4ee5\u4e0e\u9759\u6001\u4ee3\u7801\u7b56\u7565\uff08\u7531\u8fd0\u884c\u65f6\u5b9a\u4e49\uff09\u76f8\u5339\u914d\u6216\u6709\u6240\u533a\u522b\u3002\u53cd\u5c04\u516c\u5f00\u4e86\u4e00\u4e2a<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.reflection\">\u4e30\u5bcc\u7684\u5bf9\u8c61\u6a21\u578b<\/a>\uff0c\u5b83\u53ef\u4ee5\u76f4\u63a5\u7528\u4e8e\u7b80\u5355\u7684\u7528\u4f8b\uff0c\u4f46\u968f\u7740\u573a\u666f\u53d8\u5f97\u66f4\u52a0\u590d\u6742\uff0c\u60a8\u5c31\u9700\u8981\u66f4\u6df1\u5165\u5730\u4e86\u89e3 .NET \u7c7b\u578b\u7cfb\u7edf\u3002<\/p>\n<p>\u53cd\u5c04\u8fd8\u542f\u7528\u4e86\u4e00\u79cd\u5355\u72ec\u7684\u6a21\u5f0f\uff0c\u5176\u4e2d<a href=\"https:\/\/learn.microsoft.com\/dotnet\/framework\/reflection-and-codedom\/emitting-dynamic-methods-and-assemblies\">\u751f\u6210\u7684 IL \u5b57\u8282\u4ee3\u7801\u53ef\u4ee5\u5728\u8fd0\u884c\u65f6\u8fdb\u884c JIT \u7f16\u8bd1<\/a>\uff0c\u6709\u65f6\u7528\u4e8e\u4ee5\u4e13\u7528\u7b97\u6cd5\u66ff\u6362\u901a\u7528\u7b97\u6cd5\u3002\u6709\u4e86\u5bf9\u8c61\u6a21\u578b\u548c\u5176\u4ed6\u7ec6\u8282\uff0c\u5b83\u901a\u5e38\u4f1a\u88ab\u7528\u4e8e\u5e8f\u5217\u5316\u5668\u6216\u5bf9\u8c61\u5173\u7cfb\u6620\u5c04\u5668\u4e2d\u3002<\/p>\n<h4><strong>\u7f16\u8bd1\u540e\u7684\u4e8c\u8fdb\u5236\u683c\u5f0f<\/strong><strong>\u00a0<\/strong><\/h4>\n<p>\u5e94\u7528\u7a0b\u5e8f\u548c\u5e93\u88ab\u7f16\u8bd1\u4e3a<a href=\"https:\/\/en.wikipedia.org\/wiki\/COFF\">PE\/COFF \u683c\u5f0f\u7684<\/a><a href=\"https:\/\/github.com\/dotnet\/runtime\/blob\/main\/docs\/project\/dotnet-standards.md\">\u6807\u51c6\u5316<\/a>\u8de8\u5e73\u53f0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Common_Intermediate_Language\">\u5b57\u8282\u7801<\/a>\u3002\u4e8c\u8fdb\u5236\u5206\u53d1\u6700\u91cd\u8981\u7684\u662f\u6027\u80fd\u7279\u5f81\u3002\u5b83\u4f7f\u5e94\u7528\u7a0b\u5e8f\u80fd\u591f\u6269\u5c55\u5230\u8d8a\u6765\u8d8a\u591a\u7684\u9879\u76ee\u3002\u6bcf\u4e2a\u5e93\u90fd\u5305\u542b\u4e00\u4e2a\u5bfc\u5165\u548c\u5bfc\u51fa\u7c7b\u578b\u7684\u6570\u636e\u5e93\uff0c\u79f0\u4e3a<a href=\"https:\/\/www.nuget.org\/packages\/System.Reflection.Metadata\">\u5143\u6570\u636e<\/a>\uff0c\u5b83\u5bf9\u5f00\u53d1\u64cd\u4f5c\u548c\u8fd0\u884c\u5e94\u7528\u7a0b\u5e8f\u90fd\u8d77\u7740\u91cd\u8981\u4f5c\u7528\u3002<\/p>\n<p>\u7f16\u8bd1\u7684\u4e8c\u8fdb\u5236\u6587\u4ef6\u5305\u62ec\u4e24\u4e2a\u4e3b\u8981\u65b9\u9762\uff1a<\/p>\n<ul>\n<li>\u4e8c\u8fdb\u5236\u5b57\u8282\u7801\u2014\u2014\u7b80\u6d01\u800c\u89c4\u5219\u7684\u683c\u5f0f\uff0c\u65e0\u9700\u5728\u9ad8\u7ea7\u8bed\u8a00\u7f16\u8bd1\u5668\uff08\u5982 C#\uff09\u7f16\u8bd1\u540e\u89e3\u6790\u6587\u672c\u6e90\u3002<\/li>\n<li>\u5143\u6570\u636e\u2014\u2014\u63cf\u8ff0\u5bfc\u5165\u548c\u5bfc\u51fa\u7684\u7c7b\u578b\uff0c\u5305\u62ec\u7ed9\u5b9a\u65b9\u6cd5\u7684\u5b57\u8282\u4ee3\u7801\u7684\u4f4d\u7f6e\u3002<\/li>\n<\/ul>\n<p>\u4f8b\u5982\uff0c\u5bf9\u4e8e\u5f00\u53d1\uff0c\u5de5\u5177\u53ef\u4ee5\u6709\u6548\u5730\u8bfb\u53d6\u5143\u6570\u636e\u4ee5\u786e\u5b9a\u7ed9\u5b9a\u5e93\u516c\u5f00\u7684\u7c7b\u578b\u96c6\u4ee5\u53ca\u54ea\u4e9b\u7c7b\u578b\u5b9e\u73b0\u4e86\u67d0\u4e9b\u63a5\u53e3\u3002\u6b64\u8fc7\u7a0b\u53ef\u52a0\u5feb\u7f16\u8bd1\u901f\u5ea6\uff0c\u5e76\u4f7f IDE \u548c\u5176\u4ed6\u5de5\u5177\u80fd\u591f\u51c6\u786e\u5448\u73b0\u7ed9\u5b9a\u4e0a\u4e0b\u6587\u7684\u7c7b\u578b\u548c\u6210\u5458\u5217\u8868\u3002<\/p>\n<p>\u5bf9\u4e8e\u8fd0\u884c\u65f6\uff0c\u5143\u6570\u636e\u4f7f\u5e93\u80fd\u591f\u5ef6\u8fdf\u52a0\u8f7d\uff0c\u65b9\u6cd5\u4f53\u66f4\u662f\u5982\u6b64\u3002\u4e0a\u6587\u8ba8\u8bba\u8fc7\u7684\u53cd\u5c04\u662f\u5143\u6570\u636e\u548c IL \u7684\u8fd0\u884c\u65f6 API\u3002\u8fd8\u6709\u5176\u4ed6\u66f4\u9002\u5408\u5de5\u5177\u7684 API\u3002<\/p>\n<p>\u968f\u7740\u65f6\u95f4\u7684\u63a8\u79fb\uff0cIL \u683c\u5f0f\u4e00\u76f4\u4fdd\u6301\u5411\u540e\u517c\u5bb9\u3002\u6700\u65b0\u7684 .NET \u7248\u672c\u4ecd\u7136\u53ef\u4ee5\u52a0\u8f7d\u548c\u6267\u884c\u7531 .NET Framework 1.0 \u7f16\u8bd1\u5668\u751f\u6210\u7684\u4e8c\u8fdb\u5236\u6587\u4ef6\u3002<\/p>\n<p>\u5171\u4eab\u5e93\u901a\u5e38\u901a\u8fc7<a href=\"https:\/\/www.nuget.org\/packages\/System.Reflection.Metadata%22%20\/t%20%22_blank\">NuGet \u5305<\/a>\u5206\u53d1\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u5e26\u6709\u5355\u4e2a\u4e8c\u8fdb\u5236\u6587\u4ef6\u7684 NuGet \u5305\u53ef\u4ee5\u5728\u4efb\u4f55\u64cd\u4f5c\u7cfb\u7edf\u548c\u4f53\u7cfb\u7ed3\u6784\u4e0a\u8fd0\u884c\uff0c\u4f46\u4e5f\u53ef\u4ee5\u4e13\u95e8\u7528\u4e8e\u5728\u7279\u5b9a\u73af\u5883\u4e2d\u63d0\u4f9b\u7279\u5b9a\u884c\u4e3a\u3002<\/p>\n<h4><strong>\u4ee3\u7801\u751f\u6210<\/strong><strong>\u00a0<\/strong><\/h4>\n<p>.NET \u5b57\u8282\u7801\u4e0d\u662f\u673a\u5668\u53ef\u6267\u884c\u7684\u683c\u5f0f\uff0c\u5b83\u9700\u8981\u901a\u8fc7\u67d0\u79cd\u5f62\u5f0f\u7684\u4ee3\u7801\u751f\u6210\u5668\u4f7f\u5176\u53ef\u6267\u884c\u3002\u8fd9\u53ef\u4ee5\u901a\u8fc7\u63d0\u524d (AOT) \u7f16\u8bd1\u3001\u5373\u65f6 (JIT) \u7f16\u8bd1\u3001\u89e3\u91ca\u6216\u8f6c\u8bd1\u6765\u5b9e\u73b0\u3002\u4e8b\u5b9e\u4e0a\uff0c\u8fd9\u4e9b\u90fd\u662f\u4eca\u5929\u5728\u5404\u79cd\u573a\u666f\u4e2d\u4f7f\u7528\u7684\u3002<\/p>\n<p>.NET \u4ee5 JIT \u7f16\u8bd1\u800c\u95fb\u540d\u3002JIT \u5728\u5e94\u7528\u7a0b\u5e8f\u8fd0\u884c\u65f6\u5c06\u65b9\u6cd5\uff08\u548c\u5176\u4ed6\u6210\u5458\uff09\u7f16\u8bd1\u4e3a\u672c\u673a\u4ee3\u7801\uff0c\u5e76\u4e14\u4ec5\u5728\u9700\u8981\u65f6\u624d\u5c06\u5176\u7f16\u8bd1\uff0c\u56e0\u6b64\u5f97\u540d\u201c\u53ca\u65f6\uff08just in time\uff0c\u7f29\u5199\u4e3aJIT\uff09\u201d\u3002\u4f8b\u5982\uff0c\u4e00\u4e2a\u7a0b\u5e8f\u5728\u8fd0\u884c\u65f6\u53ef\u80fd\u53ea\u8c03\u7528\u4e00\u79cd\u7c7b\u578b\u4e2d\u51e0\u79cd\u65b9\u6cd5\u4e2d\u7684\u4e00\u79cd\u3002JIT \u8fd8\u53ef\u4ee5\u5229\u7528\u4ec5\u5728\u8fd0\u884c\u65f6\u53ef\u7528\u7684\u4fe1\u606f\uff0c\u5982\u521d\u59cb\u5316\u7684\u53ea\u8bfb\u9759\u6001\u53d8\u91cf\u7684\u503c\u6216\u7a0b\u5e8f\u8fd0\u884c\u7684\u786e\u5207 CPU \u6a21\u578b\uff0c\u5e76\u4e14\u53ef\u4ee5\u591a\u6b21\u7f16\u8bd1\u76f8\u540c\u7684\u65b9\u6cd5\uff0c\u4ee5\u4fbf\u6bcf\u6b21\u9488\u5bf9\u4e0d\u540c\u7684\u76ee\u6807\u8fdb\u884c\u4f18\u5316\uff0c\u5e76\u4ece\u4ee5\u524d\u7684\u7f16\u8bd1\u4e2d\u5438\u53d6\u6559\u8bad\u3002<\/p>\n<p>JIT \u4e3a\u7ed9\u5b9a\u7684\u64cd\u4f5c\u7cfb\u7edf\u548c\u82af\u7247\u67b6\u6784\u751f\u6210\u4ee3\u7801\u3002.NET \u5177\u6709\u652f\u6301 Arm64 \u548c x64 \u6307\u4ee4\u96c6\u4ee5\u53ca Linux\u3001macOS \u548c Windows \u64cd\u4f5c\u7cfb\u7edf\u7b49\u7684 JIT \u5b9e\u73b0\u3002\u4f5c\u4e3a .NET \u5f00\u53d1\u4eba\u5458\uff0c\u60a8\u4e0d\u5fc5\u62c5\u5fc3 CPU \u6307\u4ee4\u96c6\u548c\u64cd\u4f5c\u7cfb\u7edf\u8c03\u7528\u7ea6\u5b9a\u4e4b\u95f4\u7684\u5dee\u5f02\u3002JIT \u8d1f\u8d23\u751f\u6210 CPU \u9700\u8981\u7684\u4ee3\u7801\u3002\u5b83\u8fd8\u77e5\u9053\u5982\u4f55\u4e3a\u6bcf\u4e2a CPU \u751f\u6210\u5feb\u901f\u4ee3\u7801\uff0c\u64cd\u4f5c\u7cfb\u7edf\u548c CPU \u4f9b\u5e94\u5546\u7ecf\u5e38\u5e2e\u52a9\u6211\u4eec\u505a\u5230\u8fd9\u4e00\u70b9\u3002<\/p>\n<p>AOT\u7c7b\u4f3c\uff0c\u53ea\u662f\u4ee3\u7801\u662f\u5728\u7a0b\u5e8f\u8fd0\u884c\u4e4b\u524d\u751f\u6210\u7684\u3002\u5f00\u53d1\u4eba\u5458\u9009\u62e9AOT\u662f\u56e0\u4e3a\u5b83\u53ef\u4ee5\u901a\u8fc7\u6d88\u9664 JIT \u5b8c\u6210\u7684\u5de5\u4f5c\u6765\u663e\u8457\u7f29\u77ed\u542f\u52a8\u65f6\u95f4\u3002AOT \u6784\u5efa\u7684\u5e94\u7528\u7a0b\u5e8f\u672c\u8d28\u4e0a\u662f\u7279\u5b9a\u4e8e\u64cd\u4f5c\u7cfb\u7edf\u548c\u4f53\u7cfb\u7ed3\u6784\u7684\uff0c\u8fd9\u610f\u5473\u7740\u9700\u8981\u989d\u5916\u7684\u6b65\u9aa4\u624d\u80fd\u4f7f\u5e94\u7528\u7a0b\u5e8f\u5728\u591a\u4e2a\u73af\u5883\u4e2d\u8fd0\u884c\u3002\u4f8b\u5982\uff0c\u5982\u679c\u60a8\u60f3\u652f\u6301 Linux \u548c Windows \u4ee5\u53ca Arm64 \u548c x64\uff0c\u90a3\u4e48\u60a8\u9700\u8981\u6784\u5efa\u56db\u4e2a\u53d8\u4f53\uff08\u4ee5\u652f\u6301\u6240\u6709\u7ec4\u5408\uff09\u3002AOT \u4ee3\u7801\u4e5f\u53ef\u4ee5\u63d0\u4f9b\u6709\u4ef7\u503c\u7684\u4f18\u5316\uff0c\u4f46\u603b\u4f53\u4e0d\u5982 JIT \u591a\u3002<\/p>\n<p>\u6211\u4eec\u5c06\u5728\u4e4b\u540e\u7684\u6587\u7ae0\u4e2d\u4ecb\u7ecd\u89e3\u91ca\u548c\u8f6c\u8bd1\uff0c\u4f46\u662f\uff0c\u5b83\u4eec\u5728\u6211\u4eec\u7684\u751f\u6001\u7cfb\u7edf\u4e2d\u4e5f\u8d77\u7740\u81f3\u5173\u91cd\u8981\u7684\u4f5c\u7528\u3002<\/p>\n<p>\u4ee3\u7801\u751f\u6210\u5668\u4f18\u5316\u4e4b\u4e00\u662f\u5185\u5728\u51fd\u6570\u3002<a href=\"https:\/\/github.com\/dotnet\/designs\/blob\/main\/accepted\/2018\/platform-intrinsics.md%22%20\/t%20%22_blank\">\u786c\u4ef6\u5185\u5728\u51fd\u6570<\/a>\u5c31\u662f<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.numerics\">.NET API<\/a>\u76f4\u63a5\u8f6c\u6362\u4e3a CPU \u6307\u4ee4\u7684\u4f8b\u5b50\u3002\u8fd9\u5df2\u5728\u6574\u4e2a .NET \u5e93\u4e2d\u666e\u904d\u7528\u4e8e<a href=\"https:\/\/en.wikipedia.org\/wiki\/Single_instruction,_multiple_data%22%20\/t%20%22_blank\">SIMD<\/a>\u6307\u4ee4\u3002<\/p>\n<h4><strong>\u4e92\u64cd\u4f5c<\/strong><strong>\u00a0<\/strong><\/h4>\n<p>.NET \u88ab\u7279\u610f\u8bbe\u8ba1\u7528\u4e8e\u4e0e\u672c\u673a\u5e93\u7684\u4f4e\u6210\u672c\u4e92\u64cd\u4f5c\u3002.NET \u7a0b\u5e8f\u548c\u5e93\u53ef\u4ee5\u65e0\u7f1d\u8c03\u7528\u4f4e\u7ea7\u64cd\u4f5c\u7cfb\u7edf API \u6216\u5229\u7528 C\/C++ \u5e93\u7684\u5e9e\u5927\u751f\u6001\u7cfb\u7edf\u3002\u73b0\u4ee3 .NET \u8fd0\u884c\u65f6\u4e13\u6ce8\u4e8e\u63d0\u4f9b\u4f4e\u7ea7\u4e92\u64cd\u4f5c\u6784\u5efa\u5757\uff0c\u4f8b\u5982\u901a\u8fc7\u51fd\u6570\u6307\u9488\u8c03\u7528\u672c\u673a\u65b9\u6cd5\u7684\u80fd\u529b\uff0c\u5c06\u6258\u7ba1\u65b9\u6cd5\u516c\u5f00\u4e3a<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.runtime.interopservices.unmanagedcallersonlyattribute\">\u975e\u6258\u7ba1\u56de\u8c03<\/a>\u6216<a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.runtime.interopservices.idynamicinterfacecastable\">\u81ea\u5b9a\u4e49\u63a5\u53e3\u8f6c\u6362<\/a>\u3002.NET \u4e5f\u5728\u8fd9\u4e2a\u9886\u57df\u4e0d\u65ad\u53d1\u5c55\uff0c\u5728 .NET 7 \u4e2d\u53d1\u5e03\u4e86<a href=\"https:\/\/learn.microsoft.com\/dotnet\/standard\/native-interop\/pinvoke-source-generation%22%20\/t%20%22_blank\">\u6e90\u4ee3\u7801\u751f\u6210\u7684\u89e3\u51b3\u65b9\u6848<\/a>\uff0c\u8fdb\u4e00\u6b65\u51cf\u5c11\u4e86\u5f00\u9500\u5e76\u4e14\u4fbf\u4e8e\u4f7f\u7528AOT \u3002<\/p>\n<p>\u4e0b\u9762\u7684\u4ee3\u7801\u6f14\u793a\u4e86 C# \u51fd\u6570\u6307\u9488\u7684\u6548\u7387\u3002<\/p>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\">\/\/ Using a function pointer avoids a delegate allocation.\r\n\/\/ Equivalent to `void (*fptr)(int) = &amp;Callback;` in C\r\ndelegate* unmanaged&lt;int, void&gt; fptr = &amp;Callback;\r\nRegisterCallback(fptr);\r\n\r\n[UnmanagedCallersOnly]\r\nstatic void Callback(int a) =&gt; Console.WriteLine($\"Callback:  {a}\");\r\n\r\n[LibraryImport(\"...\", EntryPoint = \"RegisterCallback\")]\r\nstatic partial void RegisterCallback(delegate* unmanaged&lt;int, void&gt; fptr);<\/code><\/pre>\n<p>\u6b64\u793a\u4f8b\u4f7f\u7528.NET 7 \u4e2d\u5f15\u5165\u7684LibraryImport\u6e90\u4ee3\u7801\u751f\u6210\u5668\u3002\u5b83\u4f4d\u4e8e\u73b0\u6709DllImport\u6216 P\/Invoke \u529f\u80fd\u4e4b\u4e0a\u3002<\/p>\n<p>\u72ec\u7acb\u5305\u901a\u8fc7\u5229\u7528\u8fd9\u4e9b\u4f4e\u7ea7\u6784\u5efa\u5757\uff08\u4f8b\u5982<a href=\"https:\/\/github.com\/dotnet\/ClangSharp%22%20\/t%20%22_blank\">ClangSharp<\/a>\u3001<a href=\"https:\/\/github.com\/xamarin\/xamarin-macios%22%20\/t%20%22_blank\">Xamarin.iOS \u548c Xamarin.Mac<\/a>\u3001<a href=\"https:\/\/github.com\/microsoft\/CsWinRT%22%20\/t%20%22_blank\">CsWinRT<\/a>\u3001<a href=\"https:\/\/github.com\/microsoft\/CsWin32%22%20\/t%20%22_blank\">CsWin32<\/a>\u548c<a href=\"https:\/\/github.com\/AaronRobinsonMSFT\/DNNE%22%20\/t%20%22_blank\">DNNE<\/a>\u202f\uff09\u63d0\u4f9b\u66f4\u9ad8\u7ea7\u522b\u7684\u7279\u5b9a\u4e8e\u57df\u7684\u4e92\u64cd\u4f5c\u89e3\u51b3\u65b9\u6848\u3002<\/p>\n<p>\u8fd9\u4e9b\u65b0\u529f\u80fd\u5e76\u4e0d\u610f\u5473\u7740\u5185\u7f6e\u8fd0\u884c\u65f6\u6258\u7ba1\/\u975e\u6258\u7ba1\u7f16\u7ec4\u6216 Windows COM \u4e92\u64cd\u4f5c\u7b49\u5185\u7f6e\u4e92\u64cd\u4f5c\u89e3\u51b3\u65b9\u6848\u6ca1\u6709\u7528\u2014\u2014\u6211\u4eec\u77e5\u9053\u5b83\u4eec\u6709\u7528\uff0c\u800c\u4e14\u4eba\u4eec\u5df2\u7ecf\u5f00\u59cb\u4f9d\u8d56\u5b83\u4eec\u3002\u90a3\u4e9b\u4e4b\u524d\u5185\u7f6e\u5230\u8fd0\u884c\u65f6\u4e2d\u7684\u529f\u80fd\u5c06\u7ee7\u7eed\u6309\u539f\u6837\u63d0\u4f9b\u652f\u6301\uff0c\u53ea\u662f\u4e3a\u4e86\u5411\u540e\u517c\u5bb9\uff0c\u6211\u4eec\u6ca1\u6709\u8fdb\u4e00\u6b65\u53d1\u5c55\u5b83\u4eec\u7684\u8ba1\u5212\u3002\u6240\u6709\u672a\u6765\u7684\u6295\u8d44\u90fd\u5c06\u96c6\u4e2d\u5728\u4e92\u64cd\u4f5c\u6784\u5efa\u5757\u4ee5\u53ca\u5b83\u4eec\u652f\u6301\u7684\u7279\u5b9a\u9886\u57df\u548c\u66f4\u9ad8\u6027\u80fd\u7684\u89e3\u51b3\u65b9\u6848\u4e0a\u3002<\/p>\n<h4><strong>\u4e8c\u8fdb\u5236\u5206\u5e03<\/strong><strong>\u00a0<\/strong><\/h4>\n<p>Microsoft \u7684 .NET \u56e2\u961f\u7ef4\u62a4\u7740<a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/os-lifecycle-policy.md%22%20\/t%20%22_blank\">\u591a\u4e2a\u4e8c\u8fdb\u5236\u53d1\u884c\u7248<\/a>\uff0c\u6700\u8fd1\u5f00\u59cb\u652f\u6301 Android\u3001iOS \u548c<a href=\"https:\/\/learn.microsoft.com\/aspnet\/core\/blazor\/hosting-models%22%20\/l%20%22blazor-webassembly%22%20\/t%20%22_blank\">WebAssembly<\/a>\u3002\u8be5\u56e2\u961f\u4f7f\u7528\u591a\u79cd\u6280\u672f\u4e3a\u8fd9\u4e9b\u73af\u5883\u4e2d\u7684\u6bcf\u4e00\u4e2a\u73af\u5883\u5b9a\u5236\u4ee3\u7801\u5e93\u3002\u5927\u591a\u6570\u5e73\u53f0\u662f\u7528 C# \u7f16\u5199\u7684\uff0c\u8fd9\u4f7f\u5f97\u79fb\u690d\u53ef\u4ee5\u96c6\u4e2d\u5728\u76f8\u5bf9\u8f83\u5c0f\u7684\u7ec4\u4ef6\u96c6\u4e0a\u3002<\/p>\n<p>\u793e\u533a<a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/linux.md%22%20\/t%20%22_blank\">\u7ef4\u62a4\u7740\u53e6\u4e00\u5957\u53d1\u884c\u7248<\/a>\uff0c\u4e3b\u8981\u96c6\u4e2d\u4e8eLinux \u3002\u4f8b\u5982\uff0c.NET \u5df2\u5305\u542b\u5728\u202f<a href=\"https:\/\/pkgs.alpinelinux.org\/packages?name=dotnet*\">Alpine Linux<\/a>\u3001<a href=\"https:\/\/packages.fedoraproject.org\/search?query=dotnet%22%20\\t%20%22_blank\">Fedora<\/a>\u3001<a href=\"http:\/\/redhatloves.net\/%22%20\/t%20%22_blank\">Red Hat Enterprise Linux<\/a>\u548c<a href=\"https:\/\/ubuntu.com\/blog\/install-dotnet-on-ubuntu%22%20\/t%20%22_blank\">Ubuntu<\/a>\u4e2d\u3002<\/p>\n<p>Unity Technologies \u5df2<a href=\"https:\/\/blog.unity.com\/technology\/unity-and-net-whats-next%22%20\/t%20%22_blank\">\u542f\u52a8\u4e00\u9879\u4e3a\u671f\u591a\u5e74\u7684\u8ba1\u5212<\/a>\uff0c\u4ee5\u5b9e\u73b0\u5176 .NET \u8fd0\u884c\u65f6\u7684\u73b0\u4ee3\u5316\u3002<\/p>\n<p><a href=\"https:\/\/github.com\/dotnet\/dotnet\">.Net\u5f00\u6e90\u9879\u76ee\u7684<\/a>\u7ef4\u62a4\u548c\u7ed3\u6784\u4f7f\u4e2a\u4eba\u3001\u516c\u53f8\u548c\u5176\u4ed6\u7ec4\u7ec7\u80fd\u591f\u5728\u4f20\u7edf\u7684<a href=\"https:\/\/www.redhat.com\/en\/blog\/what-open-source-upstream\">\u4e0a\u6e38\u6a21\u578b<\/a>\u4e2d\u8fdb\u884c\u534f\u4f5c\u3002Microsoft \u662f\u5e73\u53f0\u7684\u7ba1\u7406\u8005\uff0c\u63d0\u4f9b\u9879\u76ee\u6cbb\u7406\u548c\u9879\u76ee\u57fa\u7840\u8bbe\u65bd\uff08\u5982 CI \u7ba1\u9053\uff09\u3002Microsoft \u56e2\u961f\u4e0e\u7ec4\u7ec7\u5408\u4f5c\uff0c\u5e2e\u52a9\u4ed6\u4eec\u6210\u529f\u4f7f\u7528.Net\u6216<a href=\"https:\/\/github.com\/dotnet\/runtime\/blob\/main\/docs\/design\/coreclr\/botr\/guide-for-porting.md%22%20\/t%20%22_blank\">\u79fb\u690d .NET<\/a>\u3002\u8be5\u9879\u76ee\u5177\u6709\u5e7f\u6cdb\u7684\u4e0a\u6e38\u653f\u7b56\uff0c\u5176\u4e2d\u5305\u62ec\u63a5\u53d7\u7ed9\u5b9a\u53d1\u884c\u7248\u72ec\u6709\u7684\u66f4\u6539\u3002<\/p>\n<p>\u4e00\u4e2a\u4e3b\u8981\u7126\u70b9\u662f<a href=\"https:\/\/github.com\/dotnet\/source-build\">\u6e90\u6784\u5efa\u9879\u76ee<\/a>\uff0c<a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/linux.md\">\u591a\u4e2a\u7ec4\u7ec7<\/a>\u4f7f\u7528\u5b83\u6839\u636e\u5178\u578b\u7684\u53d1\u884c\u7248\u89c4\u5219\u6784\u5efa .NET\uff0c\u4f8b\u5982<a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/dotnet-6-is-now-in-ubuntu-2204\/\">Canonical (Ubuntu)<\/a>\u548c Red Hat\u3002\u6700\u8fd1\uff0c\u968f\u7740<a href=\"https:\/\/github.com\/dotnet\/dotnet\">\u865a\u62df\u5355\u58f0\u9053\u56de\u8d2d (VMR)<\/a>\u7684\u52a0\u5165\uff0c\u8fd9\u4e00\u91cd\u70b9\u5f97\u5230\u4e86\u6269\u5c55\u3002.NET \u9879\u76ee\u7531\u8bb8\u591a\u5b58\u50a8\u5e93\u7ec4\u6210\uff0c\u8fd9\u6709\u52a9\u4e8e\u63d0\u9ad8 .NET \u5f00\u53d1\u4eba\u5458\u7684\u6548\u7387\uff0c\u4f46\u4e5f\u4f7f\u6784\u5efa\u5b8c\u6574\u7684\u4ea7\u54c1\u53d8\u5f97\u66f4\u52a0\u56f0\u96be\u3002VMR \u89e3\u51b3\u4e86\u8fd9\u4e2a\u95ee\u9898\u3002<\/p>\n<h4><strong>\u6982\u62ec<\/strong><strong>\u00a0<\/strong><\/h4>\n<p>\u6211\u4eec\u6709\u51e0\u4e2a\u7248\u672c\u8fdb\u5165\u73b0\u4ee3 .NET \u65f6\u4ee3\uff0c\u6700\u8fd1\u53d1\u5e03\u4e86<a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/announcing-dotnet-7\/\">.NET 7<\/a>\u3002\u6211\u4eec\u8ba4\u4e3a\uff0c\u5982\u679c\u6211\u4eec\u603b\u7ed3\u81ea .NET Core 1.0 \u4ee5\u6765\u6211\u4eec\u4e00\u76f4\u5728\u5e73\u53f0\u7684\u6700\u4f4e\u7ea7\u522b\u6784\u5efa\u7684\u5185\u5bb9\uff0c\u5c06\u4f1a\u5f88\u6709\u7528\u3002\u6211\u4eec\u660e\u786e\u4fdd\u7559\u4e86\u539f\u59cb .NET \u7684\u7cbe\u795e\uff0c\u7ed3\u679c\u662f\u4e00\u4e2a\u65b0\u5e73\u53f0\u5f00\u8f9f\u4e86\u4e00\u6761\u65b0\u9053\u8def\uff0c\u5e76\u4e3a\u5f00\u53d1\u4eba\u5458\u63d0\u4f9b\u4e86\u65b0\u7684\u548c\u66f4\u591a\u7684\u4ef7\u503c\u3002<\/p>\n<p>\u8ba9\u6211\u4eec\u7528\u6700\u5f00\u59cb\u7684\u8bdd\u9898\u7ed3\u675f\u672c\u7bc7\u6587\u7ae0\u3002.NET \u4ee3\u8868\u56db\u4e2a\u503c\uff1a\u751f\u4ea7\u529b\u3001\u6027\u80fd\u3001\u5b89\u5168\u6027\u548c\u53ef\u9760\u6027\u3002\u6211\u4eec\u575a\u4fe1\uff0c\u5f53\u4e0d\u540c\u7684\u8bed\u8a00\u5e73\u53f0\u63d0\u4f9b\u4e0d\u540c\u7684\u65b9\u6cd5\u65f6\uff0c\u5f00\u53d1\u4eba\u5458\u4f1a\u5f97\u5230\u6700\u597d\u7684\u670d\u52a1\u3002\u4f5c\u4e3a\u4e00\u4e2a\u56e2\u961f\uff0c\u6211\u4eec\u5bfb\u6c42\u4e3a .NET \u5f00\u53d1\u4eba\u5458\u63d0\u4f9b\u9ad8\u751f\u4ea7\u529b\uff0c\u540c\u65f6\u63d0\u4f9b\u5728\u6027\u80fd\u3001\u5b89\u5168\u6027\u548c\u53ef\u9760\u6027\u65b9\u9762\u5904\u4e8e\u9886\u5148\u5730\u4f4d\u7684\u5e73\u53f0\u3002<\/p>\n<p>\u6211\u4eec\u8ba1\u5212\u5728\u672c\u7cfb\u5217\u4e2d\u6dfb\u52a0\u66f4\u591a\u5e16\u5b50\u3002\u60a8\u5e0c\u671b\u9996\u5148\u89e3\u51b3\u54ea\u4e9b\u4e3b\u9898\uff1f\u8bf7\u5728\u8bc4\u8bba\u4e2d\u544a\u8bc9\u6211\u4eec\u3002\u60a8\u60f3\u8981\u66f4\u591a\u8fd9\u79cd\u201c\u5168\u5c40\u201d\u5185\u5bb9\u5417\uff1f<\/p>\n<p>\u5982\u679c\u60a8\u9700\u8981\u66f4\u591a\u6b64\u7c7b\u5185\u5bb9\uff0c\u53ef\u4ee5\u67e5\u770b<a href=\"https:\/\/github.com\/dotnet\/runtime\/blob\/main\/docs\/design\/coreclr\/botr\/intro-to-clr.md%22%20\/t%20%22_blank\">\u516c\u5171\u8bed\u8a00\u8fd0\u884c\u65f6 (CLR) \u7b80\u4ecb<\/a>\u3002<\/p>\n<p>\u8fd9\u7bc7\u6587\u7ae0\u7531<a href=\"https:\/\/github.com\/jkotas%22%20\/t%20%22_blank\">Jan Kotas<\/a>\u3001<a href=\"https:\/\/github.com\/richlander%22%20\/t%20%22_blank\">Rich Lander<\/a>\u3001<a href=\"https:\/\/github.com\/Maoni0%22%20\/t%20%22_blank\">Maoni Stephens<\/a>\u548c<a href=\"https:\/\/github.com\/stephentoub\">Stephen Toub<\/a>\u64b0\u5199\uff0c\u56ca\u62ec\u4e86 .NET \u56e2\u961f\u540c\u4e8b\u7684\u6df1\u523b\u89c1\u89e3\u548c\u5ba1\u9605\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u6587\u7ffb\u8bd1\u4e8e.NET Team\u7684\u8fd9\u7bc7\u82f1\u6587\u6587\u7ae0\uff1aWhat is .NET, and why should you choose it? &#8211; .NET Blog (microsoft.com) \u81ea\u4ece\u6211\u4eec\u542f\u52a8\u5feb\u901f\u53d1\u5c55\u7684.NET \u5f00\u6e90\u548c\u8de8\u5e73\u53f0\u9879\u76ee\u4ee5\u6765\uff0c.NET \u53d1\u751f\u4e86\u5f88\u5927\u53d8\u5316\u3002\u6211\u4eec\u91cd\u65b0\u601d\u8003\u5e76\u5b8c\u5584\u4e86\u8be5\u5e73\u53f0\uff0c\u6dfb\u52a0\u4e86\u4e13\u4e3a\u6027\u80fd\u548c\u5b89\u5168\u6027\u800c\u8bbe\u8ba1\u7684\u65b0\u4f4e\u7ea7\u529f\u80fd\uff0c\u4ee5\u53ca\u4ee5\u751f\u4ea7\u529b\u4e3a\u4e2d\u5fc3\u7684\u9ad8\u7ea7\u529f\u80fd\u3002Span&lt;T&gt;\u3001\u786c\u4ef6\u5185\u5728\u51fd\u6570\u548c\u53ef\u4e3a\u7a7a\u7684\u5f15\u7528\u7c7b\u578b\u90fd\u662f\u793a\u4f8b\u3002\u6211\u4eec\u6b63\u5728\u542f\u52a8\u4e00\u4e2a\u65b0\u7684\u201c.NET \u8bbe\u8ba1\u8981\u70b9\u201d\u535a\u5ba2\u7cfb\u5217\uff0c\u4ee5\u63a2\u7d22\u5b9a\u4e49\u5f53\u4eca .NET \u5e73\u53f0\u7684\u57fa\u7840\u77e5\u8bc6\u548c\u8bbe\u8ba1\u9009\u62e9\uff0c\u4ee5\u53ca\u5b83\u4eec\u5982\u4f55\u4f7f\u60a8\u73b0\u5728\u7f16\u5199\u7684\u4ee3\u7801\u53d7\u76ca\u3002 \u672c\u7cfb\u5217\u7684\u7b2c\u4e00\u7bc7\u6587\u7ae0\u5168\u9762\u6982\u8ff0\u4e86\u5e73\u53f0\u7684\u652f\u67f1\u548c\u8bbe\u8ba1\u8981\u70b9\u3002\u5f53\u60a8\u9009\u62e9 .NET \u65f6\uff0c\u5b83\u5728\u57fa\u7840\u7ea7\u522b\u4e0a\u63cf\u8ff0\u4e86\u201c\u60a8\u5f97\u5230\u4e86\u4ec0\u4e48\u201d\uff0c\u65e8\u5728\u6210\u4e3a\u4e00\u4e2a\u5145\u5206\u4e14\u4ee5\u4e8b\u5b9e\u4e3a\u4e2d\u5fc3\u7684\u6846\u67b6\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528\u5b83\u6765\u5411\u5176\u4ed6\u4eba\u63cf\u8ff0\u8be5\u5e73\u53f0\u3002\u540e\u7eed\u5e16\u5b50\u5c06\u66f4\u8be6\u7ec6\u5730\u4ecb\u7ecd\u8fd9\u4e9b\u76f8\u540c\u7684\u4e3b\u9898\uff0c\u56e0\u4e3a\u8fd9\u7bc7\u5e16\u5b50\u5e76\u6ca1\u6709\u5b8c\u5168\u516c\u6b63\u5730\u4ecb\u7ecd\u8fd9\u4e9b\u529f\u80fd\u4e2d\u7684\u4efb\u4f55\u4e00\u4e2a\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e0d\u63cf\u8ff0\u5de5\u5177\uff0c\u5982 Visual Studio\uff0c\u4e5f\u4e0d\u6db5\u76d6\u66f4\u9ad8\u7ea7\u7684\u5e93\u548c\u5e94\u7528\u7a0b\u5e8f\u6a21\u578b\uff0c\u5982ASP.NET Core\u63d0\u4f9b\u7684\u90a3\u4e9b\u3002 \u6211\u4eec\u6240\u8bf4\u7684\u201c.NET\u201d\u662f\u73b0\u4ee3\u7684 .NET Core\u3002\u4ee5\u9632\u60a8\u9519\u8fc7\u4e86\uff0c\u6211\u4eec\u5728 GitHub \u4e0a\u4f5c\u4e3a\u5f00\u6e90\u9879\u76ee\u4e8e 2014 \u5e74\u542f\u52a8\u4e86\u8fd9\u4e2a\u9879\u76ee\u3002\u5b83\u5728Arm64\u3001x64 \u548c\u5176\u4ed6\u82af\u7247\u67b6\u6784\u4e0a\u7684Linux\u3001macOS \u548c Windows \u4e0a\u8fd0\u884c\u3002\u5b83\u5728\u4e00\u5806Linux\u53d1\u884c\u7248\u4e2d\u53ef\u7528\u3002\u5b83\u4e0e .NET Framework \u4fdd\u6301\u4e86\u5f88\u5927\u7684\u517c\u5bb9\u6027\uff0c\u4f46\u53c8\u662f\u4e00\u4e2a\u5168\u65b0\u7684\u65b9\u5411\u548c\u4ea7\u54c1\u3002 \u8fdb\u5165\u7ec6\u8282\u4e4b\u524d\uff0c\u6709\u5fc5\u8981\u8c08\u8c08 .NET \u7684\u4f7f\u7528\u3002\u6570\u767e\u4e07\u5f00\u53d1\u4eba\u5458\u4f7f\u7528\u5b83\u5728\u591a\u4e2a\u64cd\u4f5c\u7cfb\u7edf\u548c\u82af\u7247\u67b6\u6784\u4e0a\u521b\u5efa\u4e91\u3001\u5ba2\u6237\u7aef\u548c\u5176\u4ed6\u5e94\u7528\u7a0b\u5e8f\u3002\u5b83\u4e5f\u5728\u4e00\u4e9b\u8457\u540d\u7684\u5730\u65b9\u8fd0\u884c\uff0c\u5982Azure\u3001StackOverflow\u548cUnity\u3002\u5404\u79cd\u89c4\u6a21\u7684\u516c\u53f8\u90fd\u4f7f\u7528 .NET \u5f88\u5e38\u89c1\uff0c\u5c24\u5176\u662f\u5927\u516c\u53f8\u3002\u5728\u5f88\u591a\u5730\u65b9\uff0c\u9700\u8981\u4e86\u89e3.NET \u8fd9\u9879\u597d\u6280\u672f\u624d\u80fd\u627e\u5230\u5de5\u4f5c\u3002\u3002 \u67e5\u770b\u793e\u533a\u5bf9\u8fd9\u7bc7\u6587\u7ae0\u7684\u53cd\u5e94\uff1a\u5173\u4e8e\u201c\u4ec0\u4e48\u662f .NET\uff0c\u4e3a\u4ec0\u4e48\u8981\u9009\u62e9\u5b83\uff1f\u201d\u7684\u60f3\u6cd5 .NET \u8bbe\u8ba1\u8981\u70b9 .NET \u5e73\u53f0\u4ee3\u8868\u751f\u4ea7\u529b\u3001\u6027\u80fd\u3001\u5b89\u5168\u6027\u548c\u53ef\u9760\u6027\u3002.NET \u5728\u8fd9\u4e9b\u4ef7\u503c\u4e4b\u95f4\u53d6\u5f97\u7684\u5e73\u8861\u4f7f\u5176\u5177\u6709\u5438\u5f15\u529b\u3002 .NET \u7684\u8bbe\u8ba1\u8981\u70b9\u53ef\u4ee5\u5f52\u7ed3\u4e3a\u5728\u5b89\u5168\u57df\uff08\u4e00\u5207\u90fd\u9ad8\u6548\uff09\u548c\u4e0d\u5b89\u5168\u57df\uff08\u5b58\u5728\u5927\u91cf\u529f\u80fd\uff09\u4e2d\u90fd\u6709\u6548\u548c\u9ad8\u6548\u3002.NET [&hellip;]<\/p>\n","protected":false},"author":113098,"featured_media":361,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-314","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet-ch"],"acf":[],"blog_post_summary":"<p>\u672c\u6587\u7ffb\u8bd1\u4e8e.NET Team\u7684\u8fd9\u7bc7\u82f1\u6587\u6587\u7ae0\uff1aWhat is .NET, and why should you choose it? &#8211; .NET Blog (microsoft.com) \u81ea\u4ece\u6211\u4eec\u542f\u52a8\u5feb\u901f\u53d1\u5c55\u7684.NET \u5f00\u6e90\u548c\u8de8\u5e73\u53f0\u9879\u76ee\u4ee5\u6765\uff0c.NET \u53d1\u751f\u4e86\u5f88\u5927\u53d8\u5316\u3002\u6211\u4eec\u91cd\u65b0\u601d\u8003\u5e76\u5b8c\u5584\u4e86\u8be5\u5e73\u53f0\uff0c\u6dfb\u52a0\u4e86\u4e13\u4e3a\u6027\u80fd\u548c\u5b89\u5168\u6027\u800c\u8bbe\u8ba1\u7684\u65b0\u4f4e\u7ea7\u529f\u80fd\uff0c\u4ee5\u53ca\u4ee5\u751f\u4ea7\u529b\u4e3a\u4e2d\u5fc3\u7684\u9ad8\u7ea7\u529f\u80fd\u3002Span&lt;T&gt;\u3001\u786c\u4ef6\u5185\u5728\u51fd\u6570\u548c\u53ef\u4e3a\u7a7a\u7684\u5f15\u7528\u7c7b\u578b\u90fd\u662f\u793a\u4f8b\u3002\u6211\u4eec\u6b63\u5728\u542f\u52a8\u4e00\u4e2a\u65b0\u7684\u201c.NET \u8bbe\u8ba1\u8981\u70b9\u201d\u535a\u5ba2\u7cfb\u5217\uff0c\u4ee5\u63a2\u7d22\u5b9a\u4e49\u5f53\u4eca .NET \u5e73\u53f0\u7684\u57fa\u7840\u77e5\u8bc6\u548c\u8bbe\u8ba1\u9009\u62e9\uff0c\u4ee5\u53ca\u5b83\u4eec\u5982\u4f55\u4f7f\u60a8\u73b0\u5728\u7f16\u5199\u7684\u4ee3\u7801\u53d7\u76ca\u3002 \u672c\u7cfb\u5217\u7684\u7b2c\u4e00\u7bc7\u6587\u7ae0\u5168\u9762\u6982\u8ff0\u4e86\u5e73\u53f0\u7684\u652f\u67f1\u548c\u8bbe\u8ba1\u8981\u70b9\u3002\u5f53\u60a8\u9009\u62e9 .NET \u65f6\uff0c\u5b83\u5728\u57fa\u7840\u7ea7\u522b\u4e0a\u63cf\u8ff0\u4e86\u201c\u60a8\u5f97\u5230\u4e86\u4ec0\u4e48\u201d\uff0c\u65e8\u5728\u6210\u4e3a\u4e00\u4e2a\u5145\u5206\u4e14\u4ee5\u4e8b\u5b9e\u4e3a\u4e2d\u5fc3\u7684\u6846\u67b6\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528\u5b83\u6765\u5411\u5176\u4ed6\u4eba\u63cf\u8ff0\u8be5\u5e73\u53f0\u3002\u540e\u7eed\u5e16\u5b50\u5c06\u66f4\u8be6\u7ec6\u5730\u4ecb\u7ecd\u8fd9\u4e9b\u76f8\u540c\u7684\u4e3b\u9898\uff0c\u56e0\u4e3a\u8fd9\u7bc7\u5e16\u5b50\u5e76\u6ca1\u6709\u5b8c\u5168\u516c\u6b63\u5730\u4ecb\u7ecd\u8fd9\u4e9b\u529f\u80fd\u4e2d\u7684\u4efb\u4f55\u4e00\u4e2a\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e0d\u63cf\u8ff0\u5de5\u5177\uff0c\u5982 Visual Studio\uff0c\u4e5f\u4e0d\u6db5\u76d6\u66f4\u9ad8\u7ea7\u7684\u5e93\u548c\u5e94\u7528\u7a0b\u5e8f\u6a21\u578b\uff0c\u5982ASP.NET Core\u63d0\u4f9b\u7684\u90a3\u4e9b\u3002 \u6211\u4eec\u6240\u8bf4\u7684\u201c.NET\u201d\u662f\u73b0\u4ee3\u7684 .NET Core\u3002\u4ee5\u9632\u60a8\u9519\u8fc7\u4e86\uff0c\u6211\u4eec\u5728 GitHub \u4e0a\u4f5c\u4e3a\u5f00\u6e90\u9879\u76ee\u4e8e 2014 \u5e74\u542f\u52a8\u4e86\u8fd9\u4e2a\u9879\u76ee\u3002\u5b83\u5728Arm64\u3001x64 \u548c\u5176\u4ed6\u82af\u7247\u67b6\u6784\u4e0a\u7684Linux\u3001macOS \u548c Windows \u4e0a\u8fd0\u884c\u3002\u5b83\u5728\u4e00\u5806Linux\u53d1\u884c\u7248\u4e2d\u53ef\u7528\u3002\u5b83\u4e0e .NET Framework \u4fdd\u6301\u4e86\u5f88\u5927\u7684\u517c\u5bb9\u6027\uff0c\u4f46\u53c8\u662f\u4e00\u4e2a\u5168\u65b0\u7684\u65b9\u5411\u548c\u4ea7\u54c1\u3002 \u8fdb\u5165\u7ec6\u8282\u4e4b\u524d\uff0c\u6709\u5fc5\u8981\u8c08\u8c08 .NET \u7684\u4f7f\u7528\u3002\u6570\u767e\u4e07\u5f00\u53d1\u4eba\u5458\u4f7f\u7528\u5b83\u5728\u591a\u4e2a\u64cd\u4f5c\u7cfb\u7edf\u548c\u82af\u7247\u67b6\u6784\u4e0a\u521b\u5efa\u4e91\u3001\u5ba2\u6237\u7aef\u548c\u5176\u4ed6\u5e94\u7528\u7a0b\u5e8f\u3002\u5b83\u4e5f\u5728\u4e00\u4e9b\u8457\u540d\u7684\u5730\u65b9\u8fd0\u884c\uff0c\u5982Azure\u3001StackOverflow\u548cUnity\u3002\u5404\u79cd\u89c4\u6a21\u7684\u516c\u53f8\u90fd\u4f7f\u7528 .NET \u5f88\u5e38\u89c1\uff0c\u5c24\u5176\u662f\u5927\u516c\u53f8\u3002\u5728\u5f88\u591a\u5730\u65b9\uff0c\u9700\u8981\u4e86\u89e3.NET \u8fd9\u9879\u597d\u6280\u672f\u624d\u80fd\u627e\u5230\u5de5\u4f5c\u3002\u3002 \u67e5\u770b\u793e\u533a\u5bf9\u8fd9\u7bc7\u6587\u7ae0\u7684\u53cd\u5e94\uff1a\u5173\u4e8e\u201c\u4ec0\u4e48\u662f .NET\uff0c\u4e3a\u4ec0\u4e48\u8981\u9009\u62e9\u5b83\uff1f\u201d\u7684\u60f3\u6cd5 .NET \u8bbe\u8ba1\u8981\u70b9 .NET \u5e73\u53f0\u4ee3\u8868\u751f\u4ea7\u529b\u3001\u6027\u80fd\u3001\u5b89\u5168\u6027\u548c\u53ef\u9760\u6027\u3002.NET \u5728\u8fd9\u4e9b\u4ef7\u503c\u4e4b\u95f4\u53d6\u5f97\u7684\u5e73\u8861\u4f7f\u5176\u5177\u6709\u5438\u5f15\u529b\u3002 .NET \u7684\u8bbe\u8ba1\u8981\u70b9\u53ef\u4ee5\u5f52\u7ed3\u4e3a\u5728\u5b89\u5168\u57df\uff08\u4e00\u5207\u90fd\u9ad8\u6548\uff09\u548c\u4e0d\u5b89\u5168\u57df\uff08\u5b58\u5728\u5927\u91cf\u529f\u80fd\uff09\u4e2d\u90fd\u6709\u6548\u548c\u9ad8\u6548\u3002.NET [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/wp-json\/wp\/v2\/posts\/314","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/wp-json\/wp\/v2\/users\/113098"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/wp-json\/wp\/v2\/comments?post=314"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/wp-json\/wp\/v2\/posts\/314\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/wp-json\/wp\/v2\/media\/361"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/wp-json\/wp\/v2\/media?parent=314"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/wp-json\/wp\/v2\/categories?post=314"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/wp-json\/wp\/v2\/tags?post=314"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}