{"id":1193,"date":"2019-02-18T14:26:28","date_gmt":"2019-02-18T05:26:28","guid":{"rendered":"http:\/\/yoonhada.com\/wp\/?p=1193"},"modified":"2023-12-27T02:14:43","modified_gmt":"2023-12-26T17:14:43","slug":"c-extensions-method","status":"publish","type":"post","link":"http:\/\/yoonhada.com\/?p=1193","title":{"rendered":"C# Extensions Method"},"content":{"rendered":"<p>\t\t\t\tC# 3.0\ubd80\ud130 \ucd94\uac00\ub41c \uae30\ub2a5\uc774\ub2e4. \uc774 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\uac8c \ub418\uba74 \uae30\uc874 \ud615\uc2dd\uc744 \ud655\uc7a5, \uc218\uc815\ud558\uc9c0 \uc54a\uace0\ub3c4 \uba54\uc18c\ub4dc\ub97c \ucd94\uac00\ud560 \uc218 \uc788\ub2e4.\u00a0<a href=\"https:\/\/docs.microsoft.com\/ko-kr\/dotnet\/csharp\/programming-guide\/classes-and-structs\/extension-methods\">Microsoft .NET \ubb38\uc11c<\/a>\u00a0\uc5d0\uc120 \ud655\uc7a5\uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud558\ub098 Extensions Method \ub098 \ucc28\uc774\uac00 \uc5c6\ub2e4\uace0 \uc11c\uc220\ud558\uace0 \uc788\ub2e4.<\/p>\n<pre><code class=\"language-x hljs\">\ud655\uc7a5\uba85 \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud558\ub294 \uac83\uacfc \ud615\uc2dd\uc5d0 \uc2e4\uc81c\ub85c \uc815\uc758\ub41c \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud558\ub294 \ub370\ub294 \uba85\ubc31\ud55c \ucc28\uc774\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.\n<\/code><\/pre>\n<h3 id=\"\uc0ac\uc6a9\uc6a9\ub3c4\">\uc0ac\uc6a9\uc6a9\ub3c4<\/h3>\n<p>\uc774 \uae30\ub2a5\uc740 \uc5b4\ub290 \ud074\ub798\uc2a4\uc5d0\ub098 \uc0ac\uc6a9\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 \ud2b9\uc815\ud55c \ubc94\uc704\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc88b\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c \ubd09\uc778\ub41c(sealed) \ud074\ub798\uc2a4\uc5d0 \ud544\uc694\ud55c \uae30\ub2a5\uc744 \ucd94\uac00\ud560 \uc218 \uc5c6\uc744 \ub54c\uac00 \uac00\uc7a5 \uc801\ud569\ud55c \uc0ac\uc6a9\uc6a9\ub3c4 \uc778 \uac70 \uac19\ub2e4.<\/p>\n<h3 id=\"\uc0ac\uc6a9\ubc29\ubc95\">\uc0ac\uc6a9\ubc29\ubc95<\/h3>\n<p>\uc0ac\uc6a9\ubc29\ubc95\uc740 \uc0dd\uac01\ubcf4\ub2e4 \uac04\ub2e8\ud558\ub2e4. String \ud074\ub798\uc2a4\ub97c \uc608\ub85c \ub4e4\uc5b4\ubcf4\uaca0\ub2e4.<\/p>\n<pre><code class=\"language-C# hljs cs\"><span class=\"hljs-keyword\">namespace<\/span> <span class=\"hljs-title\">ExtensionMethods<\/span>\n{\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MyExtensions<\/span>\n    {\n        <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">WordCount<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">this<\/span> String str)<\/span>\n        <\/span>{\n            <span class=\"hljs-keyword\">return<\/span> str.Split(<span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">char<\/span>[] { <span class=\"hljs-string\">' '<\/span>, <span class=\"hljs-string\">'.'<\/span>, <span class=\"hljs-string\">'?'<\/span> }, \n                             StringSplitOptions.RemoveEmptyEntries).Length;\n        }\n    }   \n}\n<\/code><\/pre>\n<p>Extensions Method\uc758 \uc0dd\uc131 \uc870\uac74\uc774 \uba87 \uac00\uc9c0 \uc788\ub2e4.<\/p>\n<ul>\n<li>\ud074\ub798\uc2a4\ub294 static\uc73c\ub85c \uc120\uc5b8\ud574\uc900\ub2e4. ( \uc790\ub3d9\uc73c\ub85c \ud568\uc218\ub3c4 static )<\/li>\n<li>\ub9e4\uac1c\ubcc0\uc218\uc758 \uccab \ubc88\uc9f8\ub294 this\uc640 \ud574\ub2f9 \uba54\uc18c\ub4dc\uac00 \ub4e4\uc5b4\uac08 \ud0c0\uc785\uc744 \uc801\uc5b4\uc900\ub2e4.<\/li>\n<\/ul>\n<p>\uc608\uc81c\uc5d0 \ub9de\uac8c \uc801\uace0 string \ubcc0\uc218\ub97c \ud655\uc778\ud574\ubcf4\uba74 WorldCount \ub77c\ub294 \ud568\uc218\uac00 \ubcf4\uc77c \uac83\uc774\ub2e4.<\/p>\n<h3 id=\"\uae30\ud0c0-\uc124\uba85\">\uae30\ud0c0 \uc124\uba85<\/h3>\n<p>\ub354 \uc790\uc138\ud55c\uac74\u00a0<a href=\"https:\/\/docs.microsoft.com\/ko-kr\/dotnet\/csharp\/programming-guide\/classes-and-structs\/extension-methods#general-guidelines\">Microsoft .NET \ubb38\uc11c<\/a>\u00a0\ub97c \ucc38\uace0\ud558\uae38 \ubc14\ub780\ub2e4.<\/p>\n<hr \/>\n<h1 id=\"unity-extensions-method\">Unity + Extensions Method<\/h1>\n<p>\uc774 \uae30\ub2a5\uc744 \uc720\ub2c8\ud2f0\uc5d0 \uac00\uc838\uc640 \uc801\uc6a9\ud574\ubcf8\ub2e4\uba74 \uae30\uc874\uc5d0 \ubd88\ud544\uc694\ud558\uac8c \ud588\ub358 \uc791\uc5c5\uc744 \ud568\uc218 \ud558\ub098\ub85c \ubcf4\uae30 \uc88b\uac8c \uc815\ub9ac\ud560 \uc218 \uc788\uac8c \ub41c\ub2e4.<\/p>\n<p>\uae30\uc874\uc5d0 \uc720\ub2c8\ud2f0 \uae30\ub2a5\uc73c\ub85c\ub9cc \uc0ac\uc6a9\ud588\uc744 \ub54c \ubd88\ud3b8\ud55c \uc791\uc5c5\uc774 \uc788\uc5c8\ub2e4.<\/p>\n<ul>\n<li>transform.position\uc758 x\uac12\ub9cc \ubc14\uafb8\uace0 \uc2f6\uc744 \ub54c<\/li>\n<li>Sprite\uc758 Color\uc911 Alpha \uac12\ub9cc \ubc14\uafb8\uace0 \uc2f6\uc744 \ub54c<\/li>\n<li>\ubc30\uc5f4\uc5d0\uc11c \ub79c\ub364\uc744 \ubf51\uace0 \uc2f6\uc744 \ub54c ( \ubb3c\ub860 \uc774\uac74 C#\uc774\uc9c0\ub9cc..\u314b )<\/li>\n<\/ul>\n<p>\ub4f1\ub4f1 \uc0c1\ud669\uc5d0 \ub530\ub77c \ub354 \uc788\uaca0\uc9c0\ub9cc \uc800\ub7f0 \uc0c1\ud669\uc5d0 Extensions Method \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\uba74 \ub9e4\uc6b0 \ud3b8\ub9ac\ud558\ub2e4.<\/p>\n<p>\uccab \ubc88\uc9f8 \uacbd\uc6b0\ub97c \uac00\uc9c0\uace0 \uc124\uba85\ud558\uc790\uba74 Unity\uc758 Transform \ud074\ub798\uc2a4\uc5d0 Extensions Method\ub97c \ucd94\uac00\ud558\uba74 \uc880 \ub354 \ucf54\ub4dc\uac00 \uae54\ub054\ud574\uc9c0\uace0 \ubcf4\uae30 \ud3b8\ud574\uc9c4\ub2e4.<\/p>\n<p>TransformExtensions.cs<\/p>\n<pre><code class=\"language-C# hljs cs\"><span class=\"hljs-keyword\">using<\/span> UnityEngine;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">TransformExtensions<\/span>\n{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">SetPositionX<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">this<\/span> Transform transform, <span class=\"hljs-keyword\">float<\/span> x)<\/span>\n    <\/span>{\n        <span class=\"hljs-keyword\">var<\/span> newPosition = <span class=\"hljs-keyword\">new<\/span> Vector3(x, transform.position.y, transform.position.z);\n        transform.position = newPosition;\n    }\n}\n<\/code><\/pre>\n<p>Test.cs<\/p>\n<pre><code class=\"language-C# hljs cs\"><span class=\"hljs-keyword\">using<\/span> UnityEngine;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Test<\/span> : <span class=\"hljs-title\">MonoBehaviour<\/span>\n{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">Start<\/span><span class=\"hljs-params\">()<\/span>\n    <\/span>{\n        <span class=\"hljs-comment\">\/\/ \uc774\uc804\uc758 X\uac12 \ubcc0\uacbd \ubc29\ubc95<\/span>\n        transform.position = Vector3.zero;\n        Debug.Log(<span class=\"hljs-string\">\"[Basic] Prev: \"<\/span> + transform.position);\n        transform.position = <span class=\"hljs-keyword\">new<\/span> Vector3(<span class=\"hljs-number\">20<\/span>, transform.position.y, transform.position.z);\n        Debug.Log(<span class=\"hljs-string\">\"[Basic] Curr: \"<\/span> + transform.position);\n\n        <span class=\"hljs-comment\">\/\/ Extensions Method<\/span>\n        transform.position = Vector3.zero;\n        Debug.Log(<span class=\"hljs-string\">\"[Extensions] Prev: \"<\/span> + transform.position);\n        transform.SetPositionX(<span class=\"hljs-number\">20<\/span>);\n        Debug.Log(<span class=\"hljs-string\">\"[Extensions] Curr: \"<\/span> + transform.position);\n    }\n}\n<\/code><\/pre>\n<h1 id=\"\ub9c8\ubb34\ub9ac\">\ub9c8\ubb34\ub9ac<\/h1>\n<p>Extensions Method\ub294 \ud074\ub798\uc2a4\uc758 \uc218\uc815\uc774 \ubd88\uac00\ub2a5\ud55c \ubd80\ubd84\ub4e4\uc5d0 \uc758\ud55c \ubc18\ubcf5\uc801\uc778 \uc77c\ub4e4\uc744 \uc904\uc5ec\uc904 \uc218 \uc788\ub294 \uc88b\uc740 \uae30\ub2a5\uc778 \uac83 \uac19\ub2e4. \uc720\ub2c8\ud2f0\ub85c \uac1c\ubc1c\uc744 \ud558\uba74\uc11c \uc5b4\uca54 \uc218 \uc5c6\uc774 \ubc18\ubcf5\uc801\uc774\uace0 \ubd88\ud544\uc694\ud55c \ucf54\ub4dc\ub4e4\uc774 \ub298\uc5b4\ub09c\ub2e4\uba74 \uc774 \uae30\ub2a5\uc744 \uc774\uc6a9\ud574 \ub9ac\ud329\ud1a0\ub9c1\ud558\ub294 \uac83\ub3c4 \uc88b\uc744 \uac83 \uac19\ub2e4.\t\t<\/p>\n","protected":false},"excerpt":{"rendered":"<p>C# 3.0\ubd80\ud130 \ucd94\uac00\ub41c \uae30\ub2a5\uc774\ub2e4. \uc774 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\uac8c \ub418\uba74 \uae30\uc874 \ud615\uc2dd\uc744 \ud655\uc7a5, \uc218\uc815\ud558\uc9c0 \uc54a\uace0\ub3c4 \uba54\uc18c\ub4dc\ub97c \ucd94\uac00\ud560 \uc218 \uc788\ub2e4.\u00a0Microsoft .NET \ubb38\uc11c\u00a0\uc5d0\uc120 \ud655\uc7a5\uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud558\ub098 Extensions Method \ub098 \ucc28\uc774\uac00 \uc5c6\ub2e4\uace0 \uc11c\uc220\ud558\uace0 \uc788\ub2e4. \ud655\uc7a5\uba85 \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud558\ub294 \uac83\uacfc \ud615\uc2dd\uc5d0 \uc2e4\uc81c\ub85c \uc815\uc758\ub41c \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud558\ub294 \ub370\ub294 \uba85\ubc31\ud55c \ucc28\uc774\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \uc0ac\uc6a9\uc6a9\ub3c4 \uc774 \uae30\ub2a5\uc740 \uc5b4\ub290 \ud074\ub798\uc2a4\uc5d0\ub098 \uc0ac\uc6a9\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 \ud2b9\uc815\ud55c \ubc94\uc704\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc88b\ub2e4. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[80,90],"tags":[20,42],"class_list":["post-1193","post","type-post","status-publish","format-standard","hentry","category-project","category-unity-project","tag-c","tag-unity"],"_links":{"self":[{"href":"http:\/\/yoonhada.com\/index.php?rest_route=\/wp\/v2\/posts\/1193","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/yoonhada.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/yoonhada.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/yoonhada.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/yoonhada.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1193"}],"version-history":[{"count":1,"href":"http:\/\/yoonhada.com\/index.php?rest_route=\/wp\/v2\/posts\/1193\/revisions"}],"predecessor-version":[{"id":2152,"href":"http:\/\/yoonhada.com\/index.php?rest_route=\/wp\/v2\/posts\/1193\/revisions\/2152"}],"wp:attachment":[{"href":"http:\/\/yoonhada.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/yoonhada.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1193"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/yoonhada.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}