{"id":1729,"date":"2024-12-18T17:07:50","date_gmt":"2024-12-18T08:07:50","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=1729"},"modified":"2025-03-24T08:50:00","modified_gmt":"2025-03-23T23:50:00","slug":"c-case%e3%81%ae%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%89%ef%bc%9a%e5%9f%ba%e7%a4%8e%e3%81%8b%e3%82%89%e6%9c%80%e6%96%b0%e6%a9%9f%e8%83%bd%e3%81%be%e3%81%a7%e8%a7%a3%e8%aa%ac%e3%81%99%e3%82%8b15","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=1729","title":{"rendered":"C# case\u306e\u5b8c\u5168\u30ac\u30a4\u30c9\uff1a\u57fa\u790e\u304b\u3089\u6700\u65b0\u6a5f\u80fd\u307e\u3067\u89e3\u8aac\u3059\u308b15\u306e\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af"},"content":{"rendered":"\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">\u306f\u3058\u3081\u306b<\/a>  <\/li>  <li>    <a href=\"#i-1\">C# case\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u57fa\u790e\u77e5\u8b58<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-2\">switch-case\u6587\u306e\u57fa\u672c\u69cb\u6587\u3068\u52d5\u4f5c\u539f\u7406<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-5\">case\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u91cd\u8981\u6027<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-8\">switch-case\u6587\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u3044\u65b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-9\">\u5b9f\u8df5\u7684\u306a\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u88c5<\/a>      <\/li>      <li>        <a href=\"#i-10\">\u30d3\u30b8\u30cd\u30b9\u30eb\u30fc\u30eb\u306e\u5b9f\u88c5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-11\">\u30a8\u30e9\u30fc\u51e6\u7406\u3068\u30ed\u30b0\u51fa\u529b<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-12\">C#\u306e\u30e2\u30c0\u30f3\u306a\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u6a5f\u80fd<\/a>    <ul class=\"menu_level_1\">      <li class=\"first last\">        <a href=\"#i-13\">\u9ad8\u5ea6\u306a\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u6280\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-18\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-19\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u5177\u4f53\u4f8b<\/a>      <\/li>      <li>        <a href=\"#i-20\">\u30e1\u30e2\u30ea\u52b9\u7387\u3092\u8003\u616e\u3057\u305f\u5b9f\u88c5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-21\">\u30b9\u30ec\u30c3\u30c9\u30bb\u30fc\u30d5\u306a\u5b9f\u88c5<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-22\">\u5b9f\u8df5\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u96c6<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-23\">API\u30ec\u30b9\u30dd\u30f3\u30b9\u30cf\u30f3\u30c9\u30e9\u30fc\u306e\u5b9f\u88c5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-24\">\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u72b6\u614b\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-25\">switch-case\u306e\u307e\u3068\u3081<\/a>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">\u306f\u3058\u3081\u306b<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">C#\u306eswitch-case\u6587\u306f\u3001\u6761\u4ef6\u5206\u5c90\u3092\u6271\u3046\u57fa\u672c\u7684\u306a\u5236\u5fa1\u69cb\u9020\u3067\u3042\u308a\u306a\u304c\u3089\u3001\u30e2\u30c0\u30f3\u306aC#\u3067\u306f\u5f37\u529b\u306a\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u6a5f\u80fd\u3092\u5099\u3048\u305f\u8868\u73fe\u529b\u8c4a\u304b\u306a\u6a5f\u80fd\u3078\u3068\u9032\u5316\u3057\u3066\u3044\u307e\u3059\u3002<br>\u672c\u8a18\u4e8b\u3067\u306f\u3001\u57fa\u790e\u304b\u3089\u5b9f\u8df5\u7684\u306a\u4f7f\u7528\u65b9\u6cd5\u307e\u3067\u3001\u5177\u4f53\u7684\u306a\u30b3\u30fc\u30c9\u4f8b\u3092\u4ea4\u3048\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:var(--wp--preset--color--sango-main);color:#FFF\" class=\"sgb-box-simple__title\">\u672c\u8a18\u4e8b\u3067\u5b66\u3079\u308b\u3053\u3068<\/div><div class=\"sgb-box-simple__body\" style=\"border-color:var(--wp--preset--color--sango-main);background-color:#FFF\">\n<p class=\"is-style-sango-paragraph-idea-alt wp-block-paragraph\">switch-case\u6587\u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u3068\u4f7f\u7528\u65b9\u6cd5<\/p>\n\n\n\n<p class=\"is-style-sango-paragraph-idea-alt wp-block-paragraph\">C# 8.0\u4ee5\u964d\u3067\u5c0e\u5165\u3055\u308c\u305f\u30e2\u30c0\u30f3\u306a\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u6a5f\u80fd<\/p>\n\n\n\n<p class=\"is-style-sango-paragraph-idea-alt wp-block-paragraph\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u8003\u616e\u3057\u305fswitch-case\u6587\u306e\u5b9f\u88c5\u65b9\u6cd5<\/p>\n\n\n\n<p class=\"is-style-sango-paragraph-idea-alt wp-block-paragraph\">\u5b9f\u52d9\u3067\u6d3b\u7528\u3067\u304d\u308b\u5177\u4f53\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u3068\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3<\/p>\n\n\n\n<p class=\"is-style-sango-paragraph-idea-alt wp-block-paragraph\">\u30b9\u30ec\u30c3\u30c9\u30bb\u30fc\u30d5\u306a\u5b9f\u88c5\u65b9\u6cd5\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/p>\n\n\n\n<p class=\"is-style-sango-paragraph-idea-alt wp-block-paragraph\">API\u30ec\u30b9\u30dd\u30f3\u30b9\u51e6\u7406\u3084\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u7ba1\u7406\u3067\u306e\u5b9f\u8df5\u7684\u306a\u6d3b\u7528\u65b9\u6cd5<\/p>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-1\">C# case\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u57fa\u790e\u77e5\u8b58<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">switch-case\u6587\u306e\u57fa\u672c\u69cb\u6587\u3068\u52d5\u4f5c\u539f\u7406<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">switch-case\u6587\u306f\u3001\u5024\u306b\u57fa\u3065\u3044\u3066\u51e6\u7406\u3092\u5206\u5c90\u3055\u305b\u308b\u5236\u5fa1\u69cb\u9020\u3067\u3059\u3002C#\u3067\u306f\u3001\u5f93\u6765\u306e<code>switch<\/code>\u6587\u3068\u3001\u3088\u308a\u7c21\u6f54\u306a<code>switch<\/code>\u5f0f\u306e2\u3064\u306e\u5f62\u5f0f\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-3\">\u57fa\u672c\u7684\u306a\u4f7f\u7528\u4f8b<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class WeekdayAnalyzer\n{\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u66dc\u65e5\u306e\u7a2e\u985e\u3092\u5224\u5b9a\u3057\u307e\u3059\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=\"day\"&gt;\u5224\u5b9a\u5bfe\u8c61\u306e\u66dc\u65e5&lt;\/param&gt;\n    \/\/\/ &lt;returns&gt;\u66dc\u65e5\u306e\u7a2e\u985e\u3092\u793a\u3059\u6587\u5b57\u5217&lt;\/returns&gt;\n    public string GetDayType(DayOfWeek day) =&gt;\n        day switch\n        {\n            DayOfWeek.Saturday or DayOfWeek.Sunday =&gt; \"\u4f11\u65e5\",\n            DayOfWeek.Friday =&gt; \"\u91d1\u66dc\u65e5\",\n            _ =&gt; \"\u5e73\u65e5\"\n        };\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u7a2e\u985e\u306b\u5fdc\u3058\u305f\u51e6\u7406\u3092\u884c\u3044\u307e\u3059\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=\"messageType\"&gt;\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u7a2e\u985e&lt;\/param&gt;\n    \/\/\/ &lt;param name=\"content\"&gt;\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u5185\u5bb9&lt;\/param&gt;\n    \/\/\/ &lt;returns&gt;\u51e6\u7406\u7d50\u679c\u306e\u30e1\u30c3\u30bb\u30fc\u30b8&lt;\/returns&gt;\n    public string ProcessMessage(string messageType, string content)\n    {\n        if (string.IsNullOrEmpty(messageType))\n            throw new ArgumentNullException(nameof(messageType));\n\n        switch (messageType.ToLower())\n        {\n            case \"error\":\n                LogError(content);\n                return \"\u30a8\u30e9\u30fc\u3092\u8a18\u9332\u3057\u307e\u3057\u305f\";\n\n            case \"warning\":\n                LogWarning(content);\n                return \"\u8b66\u544a\u3092\u8a18\u9332\u3057\u307e\u3057\u305f\";\n\n            case \"info\":\n                LogInfo(content);\n                return \"\u60c5\u5831\u3092\u8a18\u9332\u3057\u307e\u3057\u305f\";\n\n            default:\n                throw new ArgumentException(\"\u672a\u5bfe\u5fdc\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u7a2e\u5225\u3067\u3059\", nameof(messageType));\n        }\n    }\n\n    private void LogError(string content) =&gt; Console.WriteLine($\"Error: {content}\");\n    private void LogWarning(string content) =&gt; Console.WriteLine($\"Warning: {content}\");\n    private void LogInfo(string content) =&gt; Console.WriteLine($\"Info: {content}\");\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-4\">C#\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u30a2\u30c3\u30d7\u306b\u4f34\u3046\u4e3b\u8981\u306a\u6a5f\u80fd\u5f37\u5316<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class ModernSwitchDemo\n{\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u6570\u5024\u3092\u5206\u6790\u3057\u3001\u305d\u306e\u7279\u6027\u3092\u8fd4\u3057\u307e\u3059\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=\"value\"&gt;\u5206\u6790\u5bfe\u8c61\u306e\u6570\u5024&lt;\/param&gt;\n    \/\/\/ &lt;returns&gt;\u6570\u5024\u306e\u7279\u6027\u3092\u793a\u3059\u6587\u5b57\u5217&lt;\/returns&gt;\n    public string AnalyzeNumber(int value) =&gt;\n        value switch\n        {\n            &lt; 0 =&gt; \"\u8ca0\u306e\u6570\",\n            0 =&gt; \"\u30bc\u30ed\",\n            &gt; 0 and &lt;= 10 =&gt; \"1\u6841\u306e\u6b63\u306e\u6570\",\n            &gt; 10 and &lt;= 99 =&gt; \"2\u6841\u306e\u6b63\u306e\u6570\",\n            _ =&gt; \"3\u6841\u4ee5\u4e0a\u306e\u6b63\u306e\u6570\"\n        };\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u578b\u3068\u5024\u3092\u5206\u6790\u3057\u307e\u3059\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=\"obj\"&gt;\u5206\u6790\u5bfe\u8c61\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8&lt;\/param&gt;\n    \/\/\/ &lt;returns&gt;\u5206\u6790\u7d50\u679c\u306e\u6587\u5b57\u5217&lt;\/returns&gt;\n    public string AnalyzeObject(object obj) =&gt;\n        obj switch\n        {\n            null =&gt; \"null\u5024\",\n            string { Length: 0 } =&gt; \"\u7a7a\u6587\u5b57\u5217\",\n            string s =&gt; $\"\u6587\u5b57\u5217: {s}\",\n            int n when n % 2 == 0 =&gt; $\"\u5076\u6570: {n}\",\n            int n =&gt; $\"\u5947\u6570: {n}\",\n            DateTime d =&gt; $\"\u65e5\u4ed8: {d:yyyy\/MM\/dd}\",\n            _ =&gt; $\"\u305d\u306e\u4ed6\u306e\u578b: {obj.GetType().Name}\"\n        };\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-5\">case\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u91cd\u8981\u6027<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-6\">1. \u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class StatusProcessor\n{\n    public enum OrderStatus { New, Processing, Shipped, Delivered }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u6ce8\u6587\u30b9\u30c6\u30fc\u30bf\u30b9\u306b\u5fdc\u3058\u305f\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u751f\u6210\u3057\u307e\u3059\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=\"status\"&gt;\u6ce8\u6587\u30b9\u30c6\u30fc\u30bf\u30b9&lt;\/param&gt;\n    \/\/\/ &lt;returns&gt;\u30b9\u30c6\u30fc\u30bf\u30b9\u306b\u5bfe\u5fdc\u3059\u308b\u30e1\u30c3\u30bb\u30fc\u30b8&lt;\/returns&gt;\n    public string GetStatusMessage(OrderStatus status) =&gt;\n        status switch\n        {\n            OrderStatus.New =&gt; \"\u65b0\u898f\u6ce8\u6587\u3092\u53d7\u3051\u4ed8\u3051\u307e\u3057\u305f\",\n            OrderStatus.Processing =&gt; \"\u6ce8\u6587\u3092\u51e6\u7406\u4e2d\u3067\u3059\",\n            OrderStatus.Shipped =&gt; \"\u5546\u54c1\u3092\u767a\u9001\u3057\u307e\u3057\u305f\",\n            OrderStatus.Delivered =&gt; \"\u914d\u9001\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\",\n            _ =&gt; throw new ArgumentException(\"\u7121\u52b9\u306a\u6ce8\u6587\u30b9\u30c6\u30fc\u30bf\u30b9\u3067\u3059\", nameof(status))\n        };\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-7\">2. \u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u306e\u6d3b\u7528<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class ShapeCalculator\n{\n    public record Circle(double Radius);\n    public record Rectangle(double Width, double Height);\n    public record Triangle(double Base, double Height);\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u56f3\u5f62\u306e\u9762\u7a4d\u3092\u8a08\u7b97\u3057\u307e\u3059\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=\"shape\"&gt;\u8a08\u7b97\u5bfe\u8c61\u306e\u56f3\u5f62&lt;\/param&gt;\n    \/\/\/ &lt;returns&gt;\u56f3\u5f62\u306e\u9762\u7a4d&lt;\/returns&gt;\n    public double CalculateArea(object shape) =&gt;\n        shape switch\n        {\n            Circle c =&gt; Math.PI * c.Radius * c.Radius,\n            Rectangle r =&gt; r.Width * r.Height,\n            Triangle t =&gt; t.Base * t.Height \/ 2,\n            _ =&gt; throw new ArgumentException(\"\u672a\u5bfe\u5fdc\u306e\u56f3\u5f62\u3067\u3059\", nameof(shape))\n        };\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u3068\u6a5f\u80fd\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u9ad8\u5ea6\u306a\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u3084\u5b9f\u8df5\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u3067\u306e\u6d3b\u7528\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-8\">switch-case\u6587\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u3044\u65b9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-9\">\u5b9f\u8df5\u7684\u306a\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u88c5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d5\u30a9\u30fc\u30e0\u5165\u529b\u3084API\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306f\u3001\u5b9f\u52d9\u3067\u3088\u304f\u906d\u9047\u3059\u308b\u30b7\u30ca\u30ea\u30aa\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class ValidationEngine\n{\n    public record ValidationResult(bool IsValid, string Message);\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u30e6\u30fc\u30b6\u30fc\u5165\u529b\u30c7\u30fc\u30bf\u3092\u691c\u8a3c\u3057\u307e\u3059\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=\"fieldName\"&gt;\u691c\u8a3c\u5bfe\u8c61\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u540d&lt;\/param&gt;\n    \/\/\/ &lt;param name=\"value\"&gt;\u691c\u8a3c\u3059\u308b\u5024&lt;\/param&gt;\n    \/\/\/ &lt;returns&gt;\u691c\u8a3c\u7d50\u679c&lt;\/returns&gt;\n    public ValidationResult Validate(string fieldName, object value)\n    {\n        if (string.IsNullOrEmpty(fieldName))\n            throw new ArgumentNullException(nameof(fieldName));\n\n        return (fieldName.ToLower(), value) switch\n        {\n            (\"email\", string email) =&gt; ValidateEmail(email),\n            (\"password\", string password) =&gt; ValidatePassword(password),\n            (\"age\", int age) =&gt; ValidateAge(age),\n            (\"username\", string username) =&gt; ValidateUsername(username),\n            _ =&gt; new ValidationResult(false, $\"\u672a\u5bfe\u5fdc\u306e\u30d5\u30a3\u30fc\u30eb\u30c9: {fieldName}\")\n        };\n    }\n\n    private ValidationResult ValidateEmail(string email) =&gt;\n        email switch\n        {\n            null =&gt; new(false, \"\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306f\u5fc5\u9808\u3067\u3059\"),\n            \"\" =&gt; new(false, \"\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306f\u5fc5\u9808\u3067\u3059\"),\n            var e when !e.Contains(\"@\") =&gt; new(false, \"\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u5f62\u5f0f\u304c\u4e0d\u6b63\u3067\u3059\"),\n            var e when e.Length &gt; 256 =&gt; new(false, \"\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u304c\u9577\u3059\u304e\u307e\u3059\"),\n            _ =&gt; new(true, \"\u6709\u52b9\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3067\u3059\")\n        };\n\n    private ValidationResult ValidatePassword(string password) =&gt;\n        password switch\n        {\n            null =&gt; new(false, \"\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u5fc5\u9808\u3067\u3059\"),\n            \"\" =&gt; new(false, \"\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u5fc5\u9808\u3067\u3059\"),\n            var p when p.Length &lt; 8 =&gt; new(false, \"\u30d1\u30b9\u30ef\u30fc\u30c9\u306f8\u6587\u5b57\u4ee5\u4e0a\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\"),\n            var p when !p.Any(char.IsUpper) =&gt; new(false, \"\u30d1\u30b9\u30ef\u30fc\u30c9\u306b\u306f\u5927\u6587\u5b57\u3092\u542b\u3081\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\"),\n            var p when !p.Any(char.IsLower) =&gt; new(false, \"\u30d1\u30b9\u30ef\u30fc\u30c9\u306b\u306f\u5c0f\u6587\u5b57\u3092\u542b\u3081\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\"),\n            var p when !p.Any(char.IsDigit) =&gt; new(false, \"\u30d1\u30b9\u30ef\u30fc\u30c9\u306b\u306f\u6570\u5b57\u3092\u542b\u3081\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\"),\n            _ =&gt; new(true, \"\u6709\u52b9\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u3059\")\n        };\n\n    private ValidationResult ValidateAge(int age) =&gt;\n        age switch\n        {\n            &lt; 0 =&gt; new(false, \"\u5e74\u9f62\u306f0\u4ee5\u4e0a\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\"),\n            0 =&gt; new(false, \"\u5e74\u9f62\u306f\u5fc5\u9808\u3067\u3059\"),\n            &gt; 120 =&gt; new(false, \"\u5165\u529b\u3055\u308c\u305f\u5e74\u9f62\u304c\u4e0a\u9650\u3092\u8d85\u3048\u3066\u3044\u307e\u3059\"),\n            _ =&gt; new(true, \"\u6709\u52b9\u306a\u5e74\u9f62\u3067\u3059\")\n        };\n\n    private ValidationResult ValidateUsername(string username) =&gt;\n        username switch\n        {\n            null =&gt; new(false, \"\u30e6\u30fc\u30b6\u30fc\u540d\u306f\u5fc5\u9808\u3067\u3059\"),\n            \"\" =&gt; new(false, \"\u30e6\u30fc\u30b6\u30fc\u540d\u306f\u5fc5\u9808\u3067\u3059\"),\n            var u when u.Length &lt; 3 =&gt; new(false, \"\u30e6\u30fc\u30b6\u30fc\u540d\u306f3\u6587\u5b57\u4ee5\u4e0a\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\"),\n            var u when u.Length &gt; 20 =&gt; new(false, \"\u30e6\u30fc\u30b6\u30fc\u540d\u306f20\u6587\u5b57\u4ee5\u4e0b\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\"),\n            var u when !u.All(c =&gt; char.IsLetterOrDigit(c) || c == '_') \n                =&gt; new(false, \"\u30e6\u30fc\u30b6\u30fc\u540d\u306b\u306f\u82f1\u6570\u5b57\u3068\u30a2\u30f3\u30c0\u30fc\u30b9\u30b3\u30a2\u306e\u307f\u4f7f\u7528\u3067\u304d\u307e\u3059\"),\n            _ =&gt; new(true, \"\u6709\u52b9\u306a\u30e6\u30fc\u30b6\u30fc\u540d\u3067\u3059\")\n        };\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-10\">\u30d3\u30b8\u30cd\u30b9\u30eb\u30fc\u30eb\u306e\u5b9f\u88c5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8907\u96d1\u306a\u30d3\u30b8\u30cd\u30b9\u30eb\u30fc\u30eb\u3092\u898b\u901a\u3057\u3088\u304f\u5b9f\u88c5\u3059\u308b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class DiscountCalculator\n{\n    public record Customer(\n        string Tier,\n        int PurchaseCount,\n        decimal TotalSpent,\n        DateTime RegistrationDate);\n\n    public record DiscountResult(\n        decimal DiscountRate,\n        string Reason,\n        bool IsSpecialOffer);\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u9867\u5ba2\u306e\u5272\u5f15\u7387\u3092\u8a08\u7b97\u3057\u307e\u3059\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=\"customer\"&gt;\u9867\u5ba2\u60c5\u5831&lt;\/param&gt;\n    \/\/\/ &lt;returns&gt;\u5272\u5f15\u7387\u306e\u8a08\u7b97\u7d50\u679c&lt;\/returns&gt;\n    public DiscountResult CalculateDiscount(Customer customer)\n    {\n        if (customer == null)\n            throw new ArgumentNullException(nameof(customer));\n\n        \/\/ \u30ed\u30a4\u30e4\u30ea\u30c6\u30a3\u306b\u57fa\u3065\u304f\u5272\u5f15\n        var loyaltyDiscount = customer.Tier switch\n        {\n            \"\u30d7\u30e9\u30c1\u30ca\" =&gt; new DiscountResult(0.20m, \"\u30d7\u30e9\u30c1\u30ca\u4f1a\u54e1\u7279\u5178\", false),\n            \"\u30b4\u30fc\u30eb\u30c9\" =&gt; new DiscountResult(0.15m, \"\u30b4\u30fc\u30eb\u30c9\u4f1a\u54e1\u7279\u5178\", false),\n            \"\u30b7\u30eb\u30d0\u30fc\" =&gt; new DiscountResult(0.10m, \"\u30b7\u30eb\u30d0\u30fc\u4f1a\u54e1\u7279\u5178\", false),\n            _ =&gt; new DiscountResult(0.05m, \"\u901a\u5e38\u4f1a\u54e1\u7279\u5178\", false)\n        };\n\n        \/\/ \u8cfc\u5165\u5c65\u6b74\u306b\u57fa\u3065\u304f\u7279\u5225\u5272\u5f15\n        var historyDiscount = (customer.PurchaseCount, customer.TotalSpent) switch\n        {\n            ( &gt;= 100, &gt;= 1000000m) =&gt; new DiscountResult(0.25m, \"VIP\u7279\u5225\u5272\u5f15\", true),\n            ( &gt;= 50, &gt;= 500000m) =&gt; new DiscountResult(0.20m, \"\u512a\u826f\u9867\u5ba2\u5272\u5f15\", true),\n            ( &gt;= 30, &gt;= 300000m) =&gt; new DiscountResult(0.15m, \"\u5e38\u9023\u5272\u5f15\", true),\n            _ =&gt; loyaltyDiscount\n        };\n\n        \/\/ \u4f1a\u54e1\u767b\u9332\u671f\u9593\u306b\u57fa\u3065\u304f\u8ffd\u52a0\u5272\u5f15\n        var membershipYears = (DateTime.Now - customer.RegistrationDate).Days \/ 365;\n        return membershipYears switch\n        {\n            &gt;= 5 =&gt; new DiscountResult(\n                Math.Max(historyDiscount.DiscountRate, 0.20m),\n                \"5\u5e74\u4ee5\u4e0a\u306e\u7d99\u7d9a\u4f1a\u54e1\u7279\u5178\",\n                true),\n            &gt;= 3 =&gt; new DiscountResult(\n                Math.Max(historyDiscount.DiscountRate, 0.15m),\n                \"3\u5e74\u4ee5\u4e0a\u306e\u7d99\u7d9a\u4f1a\u54e1\u7279\u5178\",\n                true),\n            _ =&gt; historyDiscount\n        };\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-11\">\u30a8\u30e9\u30fc\u51e6\u7406\u3068\u30ed\u30b0\u51fa\u529b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30a8\u30e9\u30fc\u51e6\u7406\u3068\u30ed\u30b0\u51fa\u529b\u3092\u52b9\u7387\u7684\u306b\u5b9f\u88c5\u3059\u308b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class ErrorHandler\n{\n    public enum LogLevel { Debug, Info, Warning, Error, Critical }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u30a8\u30e9\u30fc\u3092\u51e6\u7406\u3057\u3001\u9069\u5207\u306a\u30ed\u30b0\u3092\u51fa\u529b\u3057\u307e\u3059\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=\"error\"&gt;\u767a\u751f\u3057\u305f\u30a8\u30e9\u30fc&lt;\/param&gt;\n    \/\/\/ &lt;param name=\"context\"&gt;\u30a8\u30e9\u30fc\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u60c5\u5831&lt;\/param&gt;\n    public void HandleError(Exception error, string context)\n    {\n        if (error == null)\n            throw new ArgumentNullException(nameof(error));\n\n        var (level, message) = error switch\n        {\n            ArgumentException ae =&gt; (\n                LogLevel.Warning,\n                $\"\u5f15\u6570\u30a8\u30e9\u30fc - {context}: {ae.Message}\"),\n\n            InvalidOperationException ioe =&gt; (\n                LogLevel.Error,\n                $\"\u64cd\u4f5c\u30a8\u30e9\u30fc - {context}: {ioe.Message}\"),\n\n            HttpRequestException hre =&gt; (\n                LogLevel.Error,\n                $\"HTTP\u901a\u4fe1\u30a8\u30e9\u30fc - {context}: {hre.Message}\"),\n\n            FileNotFoundException fnf =&gt; (\n                LogLevel.Critical,\n                $\"\u30d5\u30a1\u30a4\u30eb\u672a\u691c\u51fa - {context}: {fnf.Message}\"),\n\n            _ =&gt; (\n                LogLevel.Error,\n                $\"\u672a\u5206\u985e\u306e\u30a8\u30e9\u30fc - {context}: {error.Message}\")\n        };\n\n        var logMessage = level switch\n        {\n            LogLevel.Debug =&gt; $\"[DEBUG] {message}\",\n            LogLevel.Info =&gt; $\"[INFO] {message}\",\n            LogLevel.Warning =&gt; $\"[WARN] {message}\",\n            LogLevel.Error =&gt; $\"[ERROR] {message}\",\n            LogLevel.Critical =&gt; $\"[CRIT] {message}\",\n            _ =&gt; $\"[UNKNOWN] {message}\"\n        };\n\n        LogMessage(level, logMessage);\n        NotifyIfNeeded(level, message);\n    }\n\n    private void LogMessage(LogLevel level, string message)\n    {\n        \/\/ \u30ed\u30b0\u51fa\u529b\u306e\u5b9f\u88c5\n        Console.WriteLine($\"{DateTime.Now:yyyy-MM-dd HH:mm:ss} {message}\");\n    }\n\n    private void NotifyIfNeeded(LogLevel level, string message)\n    {\n        if (level &gt;= LogLevel.Error)\n        {\n            \/\/ \u91cd\u5927\u306a\u30a8\u30e9\u30fc\u306e\u5834\u5408\u306f\u7ba1\u7406\u8005\u306b\u901a\u77e5\n            Console.WriteLine($\"\u7ba1\u7406\u8005\u901a\u77e5: {message}\");\n        }\n    }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3089\u306e\u5b9f\u88c5\u4f8b\u306f\u3001\u5b9f\u52d9\u3067\u76f4\u9762\u3059\u308b\u5178\u578b\u7684\u306a\u30b7\u30ca\u30ea\u30aa\u306b\u304a\u3044\u3066switch-case\u6587\u3092\u52b9\u679c\u7684\u306b\u6d3b\u7528\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<br>\u5404\u5b9f\u88c5\u306f\u4ee5\u4e0b\u3092\u5099\u3048\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-sgb-box sng-box box6\">\n<ul class=\"wp-block-list is-style-sango-list-simple\">\n<li>\u9069\u5207\u306a\u4f8b\u5916\u51e6\u7406<\/li>\n\n\n\n<li>\u308f\u304b\u308a\u3084\u3059\u3044\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8<\/li>\n\n\n\n<li>\u4fdd\u5b88\u6027\u306e\u9ad8\u3044\u30b3\u30fc\u30c9\u69cb\u9020<\/li>\n<\/ul>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-12\">C#\u306e\u30e2\u30c0\u30f3\u306a\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u6a5f\u80fd<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-13\">\u9ad8\u5ea6\u306a\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u6280\u6cd5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">C# 10.0\u4ee5\u964d\u3067\u5c0e\u5165\u3055\u308c\u305f\u9ad8\u5ea6\u306a\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u6a5f\u80fd\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u8868\u73fe\u529b\u8c4a\u304b\u306a\u30b3\u30fc\u30c9\u3092\u8a18\u8ff0\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-14\">1. \u30d7\u30ed\u30d1\u30c6\u30a3\u30d1\u30bf\u30fc\u30f3\u306e\u9ad8\u5ea6\u306a\u4f7f\u7528\u6cd5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class AdvancedPatternMatcher\n{\n    public record User(string Name, int Age, Address Address, List&lt;Order&gt; Orders);\n    public record Address(string Country, string City, string PostalCode);\n    public record Order(decimal Amount, DateTime OrderDate);\n\n    public string AnalyzeUser(User user)\n    {\n        return user switch\n        {\n            \/\/ \u30cd\u30b9\u30c8\u3055\u308c\u305f\u30d7\u30ed\u30d1\u30c6\u30a3\u30d1\u30bf\u30fc\u30f3\n            { Address: { Country: \"\u65e5\u672c\" }, Orders: { Count: &gt; 10 } }\n                =&gt; \"\u65e5\u672c\u306e\u512a\u826f\u9867\u5ba2\",\n\n            \/\/ \u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u30d1\u30bf\u30fc\u30f3\n            { Orders: [{ Amount: &gt; 100000 }, ..] }\n                =&gt; \"\u5927\u53e3\u6ce8\u6587\u3042\u308a\",\n\n            \/\/ \u8907\u5408\u6761\u4ef6\n            {\n                Age: &gt;= 20,\n                Address: { Country: \"\u65e5\u672c\" },\n                Orders: var orders\n            } when orders.Sum(o =&gt; o.Amount) &gt; 50000\n                =&gt; \"\u65e5\u672c\u306e\u6210\u4eba\u512a\u826f\u9867\u5ba2\",\n\n            _ =&gt; \"\u901a\u5e38\u9867\u5ba2\"\n        };\n    }\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-15\">2. \u62e1\u5f35\u30d7\u30ed\u30d1\u30c6\u30a3\u30d1\u30bf\u30fc\u30f3<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class ExtendedPatternExample\n{\n    public record Temperature(decimal Value, string Scale);\n    public record WeatherData(\n        Temperature Current,\n        Temperature High,\n        Temperature Low,\n        decimal Humidity,\n        decimal WindSpeed);\n\n    public string AnalyzeWeather(WeatherData data)\n    {\n        return data switch\n        {\n            \/\/ \u8907\u6570\u306e\u6761\u4ef6\u3092\u7d44\u307f\u5408\u308f\u305b\u305f\u9ad8\u5ea6\u306a\u30d1\u30bf\u30fc\u30f3\n            {\n                Current.Value: &gt; 30,\n                Humidity: &gt; 80,\n                WindSpeed: &lt; 5\n            } =&gt; \"\u84b8\u3057\u6691\u3044\",\n\n            {\n                Current.Value: &lt; 0,\n                WindSpeed: &gt; 10\n            } =&gt; \"\u53b3\u5bd2\u6ce8\u610f\",\n\n            {\n                High.Value: &gt; 35,\n                Low.Value: &gt; 25\n            } =&gt; \"\u71b1\u5e2f\u591c\u6ce8\u610f\",\n\n            _ =&gt; \"\u901a\u5e38\u6c17\u8c61\"\n        };\n    }\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-16\">3. \u30bf\u30d7\u30eb\u30d1\u30bf\u30fc\u30f3\u306e\u9ad8\u5ea6\u306a\u6d3b\u7528<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class AdvancedTuplePatterns\n{\n    public record StockData(string Symbol, decimal Price, decimal PreviousClose);\n\n    public string AnalyzeStockMovement(StockData current, StockData previous)\n    {\n        return (current, previous) switch\n        {\n            \/\/ \u6025\u6fc0\u306a\u4fa1\u683c\u4e0a\u6607\n            ({ Price: var cp, Symbol: var s1 },\n             { Price: var pp, Symbol: var s2 })\n                when s1 == s2 &amp;&amp; cp &gt; pp * 1.1m\n                =&gt; \"\u6025\u4e0a\u6607\",\n\n            \/\/ \u6025\u6fc0\u306a\u4fa1\u683c\u4e0b\u843d\n            ({ Price: var cp, Symbol: var s1 },\n             { Price: var pp, Symbol: var s2 })\n                when s1 == s2 &amp;&amp; cp &lt; pp * 0.9m\n                =&gt; \"\u6025\u4e0b\u843d\",\n\n            \/\/ \u6a2a\u3070\u3044\n            ({ Price: var cp, Symbol: var s1 },\n             { Price: var pp, Symbol: var s2 })\n                when s1 == s2 &amp;&amp; Math.Abs(cp - pp) \/ pp &lt; 0.01m\n                =&gt; \"\u6a2a\u3070\u3044\",\n\n            _ =&gt; \"\u901a\u5e38\u5909\u52d5\"\n        };\n    }\n\n    public string AnalyzeMarketTrend(\n        decimal openPrice,\n        decimal highPrice,\n        decimal lowPrice,\n        decimal closePrice)\n    {\n        return (openPrice, highPrice, lowPrice, closePrice) switch\n        {\n            var (o, h, l, c) when c &gt; o &amp;&amp; (h - l) \/ o &lt; 0.01m\n                =&gt; \"\u5b89\u5b9a\u4e0a\u6607\",\n\n            var (o, h, l, c) when c &lt; o &amp;&amp; (h - l) \/ o &lt; 0.01m\n                =&gt; \"\u5b89\u5b9a\u4e0b\u843d\",\n\n            var (o, h, l, c) when c &gt; o &amp;&amp; (h - l) \/ o &gt; 0.05m\n                =&gt; \"\u4e0d\u5b89\u5b9a\u306a\u4e0a\u6607\",\n\n            var (o, h, l, c) when c &lt; o &amp;&amp; (h - l) \/ o &gt; 0.05m\n                =&gt; \"\u4e0d\u5b89\u5b9a\u306a\u4e0b\u843d\",\n\n            _ =&gt; \"\u4e0d\u660e\u78ba\u306a\u30c8\u30ec\u30f3\u30c9\"\n        };\n    }\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-17\">4. \u30ea\u30b9\u30c8\u30d1\u30bf\u30fc\u30f3\u306e\u6d3b\u7528<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class ListPatternExample\n{\n    public record TransactionRecord(decimal Amount, DateTime Date, string Type);\n\n    public string AnalyzeTransactionPattern(List&lt;TransactionRecord&gt; transactions)\n    {\n        return transactions switch\n        {\n            [] =&gt; \"\u53d6\u5f15\u306a\u3057\",\n            \n            [var single] =&gt; $\"\u5358\u72ec\u53d6\u5f15: {single.Amount}\u5186\",\n            \n            [var first, var second]\n                when first.Amount == second.Amount\n                =&gt; \"\u540c\u984d\u9023\u7d9a\u53d6\u5f15\",\n            \n            [_, _, .. var rest, var last]\n                when rest.All(t =&gt; t.Amount &gt; last.Amount)\n                =&gt; \"\u6e1b\u5c11\u50be\u5411\",\n            \n            [var first, .., var last]\n                when last.Amount &gt; first.Amount * 2\n                =&gt; \"\u5927\u5e45\u306a\u5897\u52a0\u50be\u5411\",\n            \n            _ =&gt; \"\u901a\u5e38\u30d1\u30bf\u30fc\u30f3\"\n        };\n    }\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3089\u306e\u9ad8\u5ea6\u306a\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u6a5f\u80fd\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u8907\u96d1\u306a\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3092\u7c21\u6f54\u304b\u3064\u53ef\u8aad\u6027\u306e\u9ad8\u3044\u30b3\u30fc\u30c9\u3068\u3057\u3066\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-18\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-19\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u5177\u4f53\u4f8b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9f\u969b\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u8a08\u6e2c\u3068\u305d\u306e\u6539\u5584\u65b9\u6cd5\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using System.Diagnostics;\n\npublic class SwitchPerformanceDemo\n{\n    private readonly Dictionary&lt;string, string&gt; _commandCache = new(StringComparer.OrdinalIgnoreCase);\n    private const int IterationCount = 1000000;\n\n    public SwitchPerformanceDemo()\n    {\n        _commandCache[\"help\"] = \"\u30d8\u30eb\u30d7\u3092\u8868\u793a\u3057\u307e\u3059\";\n        _commandCache[\"version\"] = \"\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u8868\u793a\u3057\u307e\u3059\";\n        _commandCache[\"exit\"] = \"\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u7d42\u4e86\u3057\u307e\u3059\";\n        _commandCache[\"status\"] = \"\u72b6\u614b\u3092\u8868\u793a\u3057\u307e\u3059\";\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u7570\u306a\u308b\u5b9f\u88c5\u65b9\u6cd5\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u8a08\u6e2c\u3057\u307e\u3059\n    \/\/\/ &lt;\/summary&gt;\n    public void RunPerformanceTest()\n    {\n        var stopwatch = new Stopwatch();\n        var command = \"help\";\n\n        \/\/ \u901a\u5e38\u306eswitch\u6587\u3067\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u8a08\u6e2c\n        stopwatch.Start();\n        for (int i = 0; i &lt; IterationCount; i++)\n        {\n            _ = ProcessCommandWithSwitch(command);\n        }\n        stopwatch.Stop();\n        Console.WriteLine($\"Switch\u6587\u306e\u5b9f\u884c\u6642\u9593: {stopwatch.ElapsedMilliseconds}ms\");\n\n        \/\/ Dictionary\u4f7f\u7528\u6642\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u8a08\u6e2c\n        stopwatch.Restart();\n        for (int i = 0; i &lt; IterationCount; i++)\n        {\n            _ = ProcessCommandWithDictionary(command);\n        }\n        stopwatch.Stop();\n        Console.WriteLine($\"Dictionary\u4f7f\u7528\u6642\u306e\u5b9f\u884c\u6642\u9593: {stopwatch.ElapsedMilliseconds}ms\");\n\n        \/\/ switch\u5f0f\u3067\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u8a08\u6e2c\n        stopwatch.Restart();\n        for (int i = 0; i &lt; IterationCount; i++)\n        {\n            _ = ProcessCommandWithSwitchExpression(command);\n        }\n        stopwatch.Stop();\n        Console.WriteLine($\"Switch\u5f0f\u306e\u5b9f\u884c\u6642\u9593: {stopwatch.ElapsedMilliseconds}ms\");\n    }\n\n    \/\/ \u901a\u5e38\u306eswitch\u6587\u306b\u3088\u308b\u5b9f\u88c5\n    private string ProcessCommandWithSwitch(string command)\n    {\n        switch (command.ToLower())\n        {\n            case \"help\":\n                return \"\u30d8\u30eb\u30d7\u3092\u8868\u793a\u3057\u307e\u3059\";\n            case \"version\":\n                return \"\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u8868\u793a\u3057\u307e\u3059\";\n            case \"exit\":\n                return \"\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u7d42\u4e86\u3057\u307e\u3059\";\n            case \"status\":\n                return \"\u72b6\u614b\u3092\u8868\u793a\u3057\u307e\u3059\";\n            default:\n                return \"\u4e0d\u660e\u306a\u30b3\u30de\u30f3\u30c9\u3067\u3059\";\n        }\n    }\n\n    \/\/ Dictionary\u4f7f\u7528\u306b\u3088\u308b\u5b9f\u88c5\n    private string ProcessCommandWithDictionary(string command)\n    {\n        return _commandCache.TryGetValue(command, out var result) \n            ? result \n            : \"\u4e0d\u660e\u306a\u30b3\u30de\u30f3\u30c9\u3067\u3059\";\n    }\n\n    \/\/ switch\u5f0f\u306b\u3088\u308b\u5b9f\u88c5\n    private string ProcessCommandWithSwitchExpression(string command) =&gt;\n        command.ToLower() switch\n        {\n            \"help\" =&gt; \"\u30d8\u30eb\u30d7\u3092\u8868\u793a\u3057\u307e\u3059\",\n            \"version\" =&gt; \"\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u8868\u793a\u3057\u307e\u3059\",\n            \"exit\" =&gt; \"\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u7d42\u4e86\u3057\u307e\u3059\",\n            \"status\" =&gt; \"\u72b6\u614b\u3092\u8868\u793a\u3057\u307e\u3059\",\n            _ =&gt; \"\u4e0d\u660e\u306a\u30b3\u30de\u30f3\u30c9\u3067\u3059\"\n        };\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-20\">\u30e1\u30e2\u30ea\u52b9\u7387\u3092\u8003\u616e\u3057\u305f\u5b9f\u88c5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3092\u6700\u9069\u5316\u3059\u308b\u5b9f\u88c5\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class MemoryEfficientProcessor\n{\n    \/\/ \u5024\u578b\u3092\u4f7f\u7528\u3057\u305fenum\u5b9a\u7fa9\n    public enum ProcessingStatus : byte\n    {\n        Pending,\n        Processing,\n        Completed,\n        Failed\n    }\n\n    \/\/ \u30ec\u30b3\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u305f\u4e0d\u5909\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\n    public readonly record struct ProcessingResult(\n        ProcessingStatus Status,\n        string Message)\n    {\n        \/\/ \u30ab\u30b9\u30bf\u30e0\u306a\u6587\u5b57\u5217\u30d7\u30fc\u30eb\n        private static readonly string[] CommonMessages = {\n            \"\u51e6\u7406\u5f85\u3061\",\n            \"\u51e6\u7406\u4e2d\",\n            \"\u51e6\u7406\u5b8c\u4e86\",\n            \"\u51e6\u7406\u5931\u6557\"\n        };\n\n        \/\/\/ &lt;summary&gt;\n        \/\/\/ \u30e1\u30e2\u30ea\u52b9\u7387\u3092\u8003\u616e\u3057\u3066\u30b9\u30c6\u30fc\u30bf\u30b9\u306b\u5fdc\u3058\u305f\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u751f\u6210\u3057\u307e\u3059\n        \/\/\/ &lt;\/summary&gt;\n        \/\/\/ &lt;param name=\"status\"&gt;\u51e6\u7406\u30b9\u30c6\u30fc\u30bf\u30b9&lt;\/param&gt;\n        \/\/\/ &lt;returns&gt;\u30b9\u30c6\u30fc\u30bf\u30b9\u30e1\u30c3\u30bb\u30fc\u30b8&lt;\/returns&gt;\n        public static ProcessingResult CreateFromStatus(ProcessingStatus status)\n        {\n            var message = status switch\n            {\n                ProcessingStatus.Pending =&gt; CommonMessages[0],\n                ProcessingStatus.Processing =&gt; CommonMessages[1],\n                ProcessingStatus.Completed =&gt; CommonMessages[2],\n                ProcessingStatus.Failed =&gt; CommonMessages[3],\n                _ =&gt; throw new ArgumentException(\"\u7121\u52b9\u306a\u30b9\u30c6\u30fc\u30bf\u30b9\u3067\u3059\", nameof(status))\n            };\n\n            return new ProcessingResult(status, message);\n        }\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u52b9\u7387\u7684\u306b\u51e6\u7406\u3057\u307e\u3059\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=\"items\"&gt;\u51e6\u7406\u5bfe\u8c61\u306e\u30a2\u30a4\u30c6\u30e0&lt;\/param&gt;\n    \/\/\/ &lt;returns&gt;\u51e6\u7406\u7d50\u679c\u306e\u30ea\u30b9\u30c8&lt;\/returns&gt;\n    public IEnumerable&lt;ProcessingResult&gt; ProcessItems(IEnumerable&lt;string&gt; items)\n    {\n        return items.Select(item =&gt; ProcessSingleItem(item));\n    }\n\n    private ProcessingResult ProcessSingleItem(string item)\n    {\n        if (string.IsNullOrEmpty(item))\n        {\n            return ProcessingResult.CreateFromStatus(ProcessingStatus.Failed);\n        }\n\n        try\n        {\n            \/\/ \u51e6\u7406\u30ed\u30b8\u30c3\u30af\u306e\u5b9f\u88c5\n            return ProcessingResult.CreateFromStatus(ProcessingStatus.Completed);\n        }\n        catch\n        {\n            return ProcessingResult.CreateFromStatus(ProcessingStatus.Failed);\n        }\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-21\">\u30b9\u30ec\u30c3\u30c9\u30bb\u30fc\u30d5\u306a\u5b9f\u88c5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u74b0\u5883\u3067\u306e\u5b89\u5168\u306a\u5b9f\u88c5\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class ThreadSafeProcessor\n{\n    private readonly ConcurrentDictionary&lt;string, ProcessingStatus&gt; _statusMap = new();\n\n    public enum ProcessingStatus\n    {\n        Queued,\n        Processing,\n        Completed,\n        Failed\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u30b9\u30ec\u30c3\u30c9\u30bb\u30fc\u30d5\u306b\u51e6\u7406\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u66f4\u65b0\u3057\u307e\u3059\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=\"id\"&gt;\u51e6\u7406ID&lt;\/param&gt;\n    \/\/\/ &lt;param name=\"newStatus\"&gt;\u65b0\u3057\u3044\u30b9\u30c6\u30fc\u30bf\u30b9&lt;\/param&gt;\n    \/\/\/ &lt;returns&gt;\u66f4\u65b0\u304c\u6210\u529f\u3057\u305f\u304b\u3069\u3046\u304b&lt;\/returns&gt;\n    public bool UpdateStatus(string id, ProcessingStatus newStatus)\n    {\n        return _statusMap.AddOrUpdate(\n            id,\n            newStatus,\n            (_, currentStatus) =&gt;\n            {\n                \/\/ \u30b9\u30c6\u30fc\u30bf\u30b9\u9077\u79fb\u306e\u691c\u8a3c\n                return (currentStatus, newStatus) switch\n                {\n                    (ProcessingStatus.Queued, ProcessingStatus.Processing) =&gt; newStatus,\n                    (ProcessingStatus.Processing, ProcessingStatus.Completed) =&gt; newStatus,\n                    (ProcessingStatus.Processing, ProcessingStatus.Failed) =&gt; newStatus,\n                    _ =&gt; currentStatus \/\/ \u7121\u52b9\u306a\u9077\u79fb\u306e\u5834\u5408\u306f\u73fe\u5728\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u7dad\u6301\n                };\n            }) == newStatus;\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u975e\u540c\u671f\u3067\u30bf\u30b9\u30af\u3092\u51e6\u7406\u3057\u307e\u3059\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=\"id\"&gt;\u51e6\u7406ID&lt;\/param&gt;\n    \/\/\/ &lt;returns&gt;\u51e6\u7406\u7d50\u679c&lt;\/returns&gt;\n    public async Task&lt;ProcessingStatus&gt; ProcessAsync(string id)\n    {\n        if (!_statusMap.TryAdd(id, ProcessingStatus.Queued))\n        {\n            return _statusMap.GetValueOrDefault(id);\n        }\n\n        try\n        {\n            if (!UpdateStatus(id, ProcessingStatus.Processing))\n            {\n                return _statusMap.GetValueOrDefault(id);\n            }\n\n            await Task.Delay(100); \/\/ \u5b9f\u969b\u306e\u51e6\u7406\u3092\u60f3\u5b9a\n\n            UpdateStatus(id, ProcessingStatus.Completed);\n            return ProcessingStatus.Completed;\n        }\n        catch\n        {\n            UpdateStatus(id, ProcessingStatus.Failed);\n            return ProcessingStatus.Failed;\n        }\n    }\n}<\/pre>\n\n\n\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:var(--wp--preset--color--sango-main);color:#FFF\" class=\"sgb-box-simple__title\">\u3053\u308c\u3089\u306e\u5b9f\u88c5\u4f8b\u304b\u3089\u5f97\u3089\u308c\u308b\u4e3b\u8981\u306a\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/div><div class=\"sgb-box-simple__body\" style=\"border-color:var(--wp--preset--color--sango-main);background-color:#FFF\">\n<ol class=\"wp-block-list\">\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\n<ul class=\"wp-block-list\">\n<li>\u983b\u7e41\u306b\u4f7f\u7528\u3055\u308c\u308b\u5024\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u3059\u308b<\/li>\n\n\n\n<li>\u6587\u5b57\u5217\u64cd\u4f5c\u306f\u6700\u5c0f\u9650\u306b\u6291\u3048\u308b<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u9078\u629e\u3059\u308b<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u30e1\u30e2\u30ea\u52b9\u7387\n<ul class=\"wp-block-list\">\n<li>\u5024\u578b\u3092\u9069\u5207\u306b\u6d3b\u7528\u3059\u308b<\/li>\n\n\n\n<li>\u6587\u5b57\u5217\u30d7\u30fc\u30eb\u3092\u5229\u7528\u3059\u308b<\/li>\n\n\n\n<li>\u4e0d\u8981\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u751f\u6210\u3092\u907f\u3051\u308b<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u30b9\u30ec\u30c3\u30c9\u30bb\u30fc\u30d5\u30c6\u30a3\n<ul class=\"wp-block-list\">\n<li>\u9069\u5207\u306a\u540c\u671f\u6a5f\u69cb\u3092\u4f7f\u7528\u3059\u308b<\/li>\n\n\n\n<li>\u72b6\u614b\u9077\u79fb\u3092\u53b3\u5bc6\u306b\u7ba1\u7406\u3059\u308b<\/li>\n\n\n\n<li>\u7af6\u5408\u72b6\u614b\u3092\u8003\u616e\u3057\u305f\u8a2d\u8a08\u3092\u884c\u3046<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3089\u306e\u539f\u5247\u306b\u5f93\u3046\u3053\u3068\u3067\u3001\u9ad8\u6027\u80fd\u3067\u4fe1\u983c\u6027\u306e\u9ad8\u3044\u5b9f\u88c5\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-22\">\u5b9f\u8df5\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u96c6<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-23\">API\u30ec\u30b9\u30dd\u30f3\u30b9\u30cf\u30f3\u30c9\u30e9\u30fc\u306e\u5b9f\u88c5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">REST API\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u51e6\u7406\u3092\u52b9\u7387\u7684\u306b\u5b9f\u88c5\u3059\u308b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class ApiResponseHandler\n{\n    public record ApiResponse&lt;T&gt;(\n        int StatusCode,\n        T? Data,\n        string? Message,\n        IReadOnlyList&lt;string&gt;? Errors);\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ HTTP\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u306b\u57fa\u3065\u3044\u3066\u9069\u5207\u306aAPI\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u751f\u6210\u3057\u307e\u3059\n    \/\/\/ &lt;\/summary&gt;\n    public ApiResponse&lt;T&gt; HandleResponse&lt;T&gt;(\n        HttpStatusCode statusCode,\n        T? data = default,\n        string? message = null,\n        IEnumerable&lt;string&gt;? errors = null)\n    {\n        return ((int)statusCode) switch\n        {\n            200 =&gt; new(200, data, \"\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u6210\u529f\u3057\u307e\u3057\u305f\", null),\n            201 =&gt; new(201, data, \"\u30ea\u30bd\u30fc\u30b9\u304c\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\", null),\n            204 =&gt; new(204, default, \"\u51e6\u7406\u306f\u6210\u529f\u3057\u307e\u3057\u305f\u304c\u3001\u8fd4\u5374\u3059\u308b\u30c7\u30fc\u30bf\u306f\u3042\u308a\u307e\u305b\u3093\", null),\n            400 =&gt; new(400, default, message ?? \"\u4e0d\u6b63\u306a\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u3059\", errors?.ToList()),\n            401 =&gt; new(401, default, message ?? \"\u8a8d\u8a3c\u304c\u5fc5\u8981\u3067\u3059\", errors?.ToList()),\n            403 =&gt; new(403, default, message ?? \"\u30a2\u30af\u30bb\u30b9\u304c\u62d2\u5426\u3055\u308c\u307e\u3057\u305f\", errors?.ToList()),\n            404 =&gt; new(404, default, message ?? \"\u30ea\u30bd\u30fc\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\", errors?.ToList()),\n            500 =&gt; new(500, default, message ?? \"\u30b5\u30fc\u30d0\u30fc\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", errors?.ToList()),\n            _ =&gt; new((int)statusCode, default, message ?? \"\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", errors?.ToList())\n        };\n    }\n}\n\n\/\/ \u4f7f\u7528\u4f8b\npublic class UserController\n{\n    private readonly ApiResponseHandler _responseHandler = new();\n\n    public async Task&lt;ApiResponse&lt;UserDto&gt;&gt; GetUserAsync(int userId)\n    {\n        try\n        {\n            var user = await FindUserAsync(userId);\n            return user != null\n                ? _responseHandler.HandleResponse(HttpStatusCode.OK, user)\n                : _responseHandler.HandleResponse&lt;UserDto&gt;(\n                    HttpStatusCode.NotFound,\n                    message: $\"ID: {userId} \u306e\u30e6\u30fc\u30b6\u30fc\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\");\n        }\n        catch (Exception ex)\n        {\n            return _responseHandler.HandleResponse&lt;UserDto&gt;(\n                HttpStatusCode.InternalServerError,\n                message: \"\u30e6\u30fc\u30b6\u30fc\u60c5\u5831\u306e\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\",\n                errors: new[] { ex.Message });\n        }\n    }\n\n    private Task&lt;UserDto?&gt; FindUserAsync(int userId)\n    {\n        \/\/ \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a2\u30af\u30bb\u30b9\u306e\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\n        return Task.FromResult&lt;UserDto?&gt;(new UserDto(userId, \"\u30c6\u30b9\u30c8\u30e6\u30fc\u30b6\u30fc\"));\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-24\">\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u72b6\u614b\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8907\u96d1\u306a\u30d3\u30b8\u30cd\u30b9\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306e\u72b6\u614b\u3092\u7ba1\u7406\u3059\u308b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class WorkflowManager\n{\n    public record WorkflowState(\n        string CurrentState,\n        Dictionary&lt;string, object&gt; Data,\n        DateTime LastUpdated);\n\n    public record WorkflowResult(\n        bool Success,\n        string NewState,\n        string Message,\n        Dictionary&lt;string, object&gt; UpdatedData);\n\n    private readonly Dictionary&lt;string, HashSet&lt;string&gt;&gt; _allowedTransitions = new()\n    {\n        [\"draft\"] = new() { \"review\", \"canceled\" },\n        [\"review\"] = new() { \"approved\", \"rejected\", \"canceled\" },\n        [\"approved\"] = new() { \"published\", \"archived\" },\n        [\"rejected\"] = new() { \"draft\", \"canceled\" },\n        [\"published\"] = new() { \"archived\" },\n        [\"archived\"] = new() { \"draft\" },\n        [\"canceled\"] = new() { \"draft\" }\n    };\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306e\u72b6\u614b\u9077\u79fb\u3092\u51e6\u7406\u3057\u307e\u3059\n    \/\/\/ &lt;\/summary&gt;\n    public WorkflowResult ProcessTransition(\n        WorkflowState currentState,\n        string newState,\n        Dictionary&lt;string, object&gt;? additionalData = null)\n    {\n        \/\/ \u72b6\u614b\u9077\u79fb\u306e\u691c\u8a3c\n        if (!IsValidTransition(currentState.CurrentState, newState))\n        {\n            return new WorkflowResult(\n                false,\n                currentState.CurrentState,\n                $\"\u7121\u52b9\u306a\u72b6\u614b\u9077\u79fb\u3067\u3059: {currentState.CurrentState} -&gt; {newState}\",\n                currentState.Data);\n        }\n\n        \/\/ \u72b6\u614b\u306b\u5fdc\u3058\u305f\u51e6\u7406\u306e\u5b9f\u884c\n        var result = newState switch\n        {\n            \"review\" =&gt; ValidateForReview(currentState),\n            \"approved\" =&gt; ValidateForApproval(currentState),\n            \"published\" =&gt; PrepareForPublishing(currentState),\n            \"archived\" =&gt; PrepareForArchiving(currentState),\n            _ =&gt; new WorkflowResult(\n                true,\n                newState,\n                $\"\u72b6\u614b\u3092 {newState} \u306b\u66f4\u65b0\u3057\u307e\u3057\u305f\",\n                currentState.Data)\n        };\n\n        \/\/ \u8ffd\u52a0\u30c7\u30fc\u30bf\u306e\u7d71\u5408\n        if (result.Success &amp;&amp; additionalData != null)\n        {\n            foreach (var (key, value) in additionalData)\n            {\n                result.UpdatedData[key] = value;\n            }\n        }\n\n        return result;\n    }\n\n    private bool IsValidTransition(string currentState, string newState)\n    {\n        return _allowedTransitions.TryGetValue(currentState, out var allowedStates) &amp;&amp;\n               allowedStates.Contains(newState);\n    }\n\n    private WorkflowResult ValidateForReview(WorkflowState state)\n    {\n        var updatedData = new Dictionary&lt;string, object&gt;(state.Data);\n\n        if (!state.Data.ContainsKey(\"title\") || string.IsNullOrEmpty(state.Data[\"title\"]?.ToString()))\n        {\n            return new WorkflowResult(\n                false,\n                state.CurrentState,\n                \"\u30bf\u30a4\u30c8\u30eb\u306f\u5fc5\u9808\u3067\u3059\",\n                updatedData);\n        }\n\n        updatedData[\"reviewStartDate\"] = DateTime.Now;\n        return new WorkflowResult(\n            true,\n            \"review\",\n            \"\u30ec\u30d3\u30e5\u30fc\u958b\u59cb\",\n            updatedData);\n    }\n\n    private WorkflowResult ValidateForApproval(WorkflowState state)\n    {\n        var updatedData = new Dictionary&lt;string, object&gt;(state.Data);\n\n        if (!state.Data.ContainsKey(\"reviewerId\"))\n        {\n            return new WorkflowResult(\n                false,\n                state.CurrentState,\n                \"\u30ec\u30d3\u30e5\u30a2\u30fc\u306e\u6307\u5b9a\u304c\u5fc5\u8981\u3067\u3059\",\n                updatedData);\n        }\n\n        updatedData[\"approvalDate\"] = DateTime.Now;\n        return new WorkflowResult(\n            true,\n            \"approved\",\n            \"\u627f\u8a8d\u5b8c\u4e86\",\n            updatedData);\n    }\n\n    private WorkflowResult PrepareForPublishing(WorkflowState state)\n    {\n        var updatedData = new Dictionary&lt;string, object&gt;(state.Data)\n        {\n            [\"publishDate\"] = DateTime.Now,\n            [\"version\"] = state.Data.TryGetValue(\"version\", out var ver)\n                ? Convert.ToInt32(ver) + 1\n                : 1\n        };\n\n        return new WorkflowResult(\n            true,\n            \"published\",\n            \"\u516c\u958b\u6e96\u5099\u5b8c\u4e86\",\n            updatedData);\n    }\n\n    private WorkflowResult PrepareForArchiving(WorkflowState state)\n    {\n        var updatedData = new Dictionary&lt;string, object&gt;(state.Data)\n        {\n            [\"archiveDate\"] = DateTime.Now,\n            [\"archivedBy\"] = state.Data.GetValueOrDefault(\"currentUser\", \"system\")\n        };\n\n        return new WorkflowResult(\n            true,\n            \"archived\",\n            \"\u30a2\u30fc\u30ab\u30a4\u30d6\u5b8c\u4e86\",\n            updatedData);\n    }\n}\n\n\/\/ \u4f7f\u7528\u4f8b\npublic class DocumentWorkflowExample\n{\n    private readonly WorkflowManager _workflowManager = new();\n\n    public async Task&lt;WorkflowResult&gt; ProcessDocument(string documentId, string action)\n    {\n        \/\/ \u73fe\u5728\u306e\u72b6\u614b\u3092\u53d6\u5f97\n        var currentState = await GetDocumentState(documentId);\n\n        \/\/ \u30a2\u30af\u30b7\u30e7\u30f3\u306b\u57fa\u3065\u3044\u3066\u65b0\u3057\u3044\u72b6\u614b\u3092\u6c7a\u5b9a\n        var newState = action switch\n        {\n            \"submit\" =&gt; \"review\",\n            \"approve\" =&gt; \"approved\",\n            \"reject\" =&gt; \"rejected\",\n            \"publish\" =&gt; \"published\",\n            \"archive\" =&gt; \"archived\",\n            \"cancel\" =&gt; \"canceled\",\n            _ =&gt; throw new ArgumentException($\"\u672a\u5b9a\u7fa9\u306e\u30a2\u30af\u30b7\u30e7\u30f3: {action}\")\n        };\n\n        \/\/ \u72b6\u614b\u9077\u79fb\u3092\u51e6\u7406\n        var result = _workflowManager.ProcessTransition(\n            currentState,\n            newState,\n            new Dictionary&lt;string, object&gt;\n            {\n                [\"lastAction\"] = action,\n                [\"lastActionDate\"] = DateTime.Now\n            });\n\n        if (result.Success)\n        {\n            await SaveDocumentState(documentId, result);\n        }\n\n        return result;\n    }\n\n    private Task&lt;WorkflowState&gt; GetDocumentState(string documentId)\n    {\n        \/\/ \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u72b6\u614b\u3092\u53d6\u5f97\u3059\u308b\u51e6\u7406\n        return Task.FromResult(new WorkflowState(\n            \"draft\",\n            new Dictionary&lt;string, object&gt;\n            {\n                [\"title\"] = \"\u30b5\u30f3\u30d7\u30eb\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\",\n                [\"documentId\"] = documentId\n            },\n            DateTime.Now));\n    }\n\n    private Task SaveDocumentState(string documentId, WorkflowResult result)\n    {\n        \/\/ \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u65b0\u3057\u3044\u72b6\u614b\u3092\u4fdd\u5b58\u3059\u308b\u51e6\u7406\n        return Task.CompletedTask;\n    }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3089\u306e\u5b9f\u88c5\u4f8b\u306f\u3001\u5b9f\u52d9\u3067\u76f4\u9762\u3059\u308b\u5178\u578b\u7684\u306a\u8ab2\u984c\u306b\u5bfe\u3059\u308b\u89e3\u6c7a\u7b56\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:var(--wp--preset--color--sango-main);color:#FFF\" class=\"sgb-box-simple__title\">\u7279\u306b\u6ce8\u76ee\u3059\u3079\u304d\u70b9<\/div><div class=\"sgb-box-simple__body\" style=\"border-color:var(--wp--preset--color--sango-main);background-color:#FFF\">\n<ol class=\"wp-block-list\">\n<li>\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\n<ul class=\"wp-block-list\">\n<li>\u9069\u5207\u306a\u4f8b\u5916\u51e6\u7406<\/li>\n\n\n\n<li>\u660e\u78ba\u306a\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8<\/li>\n\n\n\n<li>\u72b6\u614b\u306e\u4e00\u8cab\u6027\u7dad\u6301<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u62e1\u5f35\u6027\n<ul class=\"wp-block-list\">\n<li>\u65b0\u3057\u3044\u72b6\u614b\u3084\u9077\u79fb\u306e\u8ffd\u52a0\u304c\u5bb9\u6613<\/li>\n\n\n\n<li>\u30d3\u30b8\u30cd\u30b9\u30eb\u30fc\u30eb\u306e\u5909\u66f4\u306b\u5bfe\u5fdc\u3057\u3084\u3059\u3044\u69cb\u9020<\/li>\n\n\n\n<li>\u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u3055\u308c\u305f\u8a2d\u8a08<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u4fdd\u5b88\u6027\n<ul class=\"wp-block-list\">\n<li>\u660e\u78ba\u306a\u8cac\u4efb\u5206\u96e2<\/li>\n\n\n\n<li>\u81ea\u5df1\u6587\u66f8\u5316\u30b3\u30fc\u30c9<\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8\u5bb9\u6613\u6027<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3089\u306e\u4f8b\u3092\u53c2\u8003\u306b\u3001\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067switch\u5f0f\u3092\u52b9\u679c\u7684\u306b\u6d3b\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-25\">switch-case\u306e\u307e\u3068\u3081<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">C#\u306eswitch-case\u6587\u306f\u3001\u5358\u7d14\u306a\u6761\u4ef6\u5206\u5c90\u304b\u3089\u8907\u96d1\u306a\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u306e\u5b9f\u88c5\u307e\u3067\u3001\u5e45\u5e83\u3044\u30b7\u30fc\u30f3\u3067\u6d3b\u7528\u3067\u304d\u308b\u5f37\u529b\u306a\u6a5f\u80fd\u3067\u3059\u3002<br>\u30e2\u30c0\u30f3\u306a\u6a5f\u80fd\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u7c21\u6f54\u3067\u4fdd\u5b88\u6027\u306e\u9ad8\u3044\u30b3\u30fc\u30c9\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u4fdd\u5b88\u6027\u306e\u30d0\u30e9\u30f3\u30b9\u3092\u8003\u616e\u3057\u306a\u304c\u3089\u3001\u9069\u5207\u306a\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:var(--wp--preset--color--sango-main);color:#FFF\" class=\"sgb-box-simple__title\">\u4e3b\u306a\u30dd\u30a4\u30f3\u30c8<\/div><div class=\"sgb-box-simple__body\" style=\"border-color:var(--wp--preset--color--sango-main);background-color:#FFF\">\n<ol class=\"wp-block-list\">\n<li>\u5b9f\u88c5\u306e\u9078\u629e\n<ul class=\"wp-block-list\">\n<li>\u5358\u7d14\u306a\u6761\u4ef6\u5206\u5c90\u306b\u306f\u65b0\u3057\u3044switch\u5f0f\u3092\u6d3b\u7528<\/li>\n\n\n\n<li>\u8907\u96d1\u306a\u6761\u4ef6\u306b\u306f\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u3092\u4f7f\u7528<\/li>\n\n\n\n<li>\u983b\u7e41\u306a\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u306b\u306fDictionary\u306e\u4f7f\u7528\u3092\u691c\u8a0e<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\n<ul class=\"wp-block-list\">\n<li>\u6587\u5b57\u5217\u6bd4\u8f03\u306f\u6700\u5c0f\u9650\u306b\u6291\u3048\u308b<\/li>\n\n\n\n<li>\u983b\u51fa\u30d1\u30bf\u30fc\u30f3\u3092\u512a\u5148\u7684\u306b\u914d\u7f6e<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u9078\u629e<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u30b3\u30fc\u30c9\u54c1\u8cea\n<ul class=\"wp-block-list\">\n<li>\u660e\u78ba\u306a\u8cac\u4efb\u5206\u96e2<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30b3\u30e1\u30f3\u30c8\u306e\u4ed8\u4e0e<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u4fdd\u5b88\u6027\u306e\u8003\u616e\n<ul class=\"wp-block-list\">\n<li>\u62e1\u5f35\u3057\u3084\u3059\u3044\u69cb\u9020\u8a2d\u8a08<\/li>\n\n\n\n<li>\u72b6\u614b\u9077\u79fb\u306e\u660e\u78ba\u306a\u5b9a\u7fa9<\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8\u5bb9\u6613\u6027\u306e\u78ba\u4fdd<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/ &#8230; <\/p>\n","protected":false},"author":1,"featured_media":2825,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,61,75],"tags":[],"class_list":["post-1729","post","type-post","status-publish","format-standard","has-post-thumbnail","category-csharp","category-csharp-syntax","category-75"],"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1729","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1729"}],"version-history":[{"count":3,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1729\/revisions"}],"predecessor-version":[{"id":1749,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1729\/revisions\/1749"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/media\/2825"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1729"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1729"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1729"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}