{"id":4374,"date":"2021-05-08T21:16:53","date_gmt":"2021-05-08T12:16:53","guid":{"rendered":"https:\/\/okamurax.com\/?p=4374"},"modified":"2021-08-09T02:53:32","modified_gmt":"2021-08-08T17:53:32","slug":"c-%e7%8b%ac%e8%87%aa%e3%82%a4%e3%83%99%e3%83%b3%e3%83%88%e7%99%bb%e9%8c%b2","status":"publish","type":"post","link":"https:\/\/appbay.org\/?p=4374","title":{"rendered":"C# \u30a4\u30d9\u30f3\u30c8\u5b9f\u9a13"},"content":{"rendered":"<p>\u30fb\u547c\u51fa\uff13\u7a2e\u985e<\/p>\n<pre class=\"lang:c# decode:true\">using System;\r\nusing System.Threading.Tasks;\r\n\r\nnamespace ConsoleApp1\r\n{\r\n    class Program\r\n    {\r\n        static void Main(string[] args)\r\n        {\r\n            var t1 = new TestClass1();\r\n\r\n            t1.TestEvent += (s, e) =&gt;\r\n            {\r\n                Console.WriteLine(\"TestEvent\");\r\n                Console.ReadKey();\r\n            };\r\n            t1.OnTestMethod1();\r\n            t1.OnTestMethod2();\r\n            t1.OnTestMethod3();\r\n        }\r\n    }\r\n\r\n    class TestClass1\r\n    {\r\n        public event EventHandler TestEvent;\r\n\r\n        \/\/ \u547c\u51fa\uff13\u7a2e\u985e\r\n\r\n        public void OnTestMethod1()\r\n        {\r\n            if (TestEvent != null)\r\n            {\r\n                TestEvent(this, new EventArgs());\r\n            }\r\n        }\r\n        public void OnTestMethod2()\r\n        {\r\n            TestEvent?.Invoke(this, new EventArgs());\r\n        }\r\n\r\n        public void OnTestMethod3() =&gt; TestEvent?.Invoke(this, new EventArgs());\r\n    }\r\n}<\/pre>\n<p>\u30fbEvent\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u7701\u7565\u3057\u306a\u3044\u5834\u5408<\/p>\n<pre class=\"lang:c# decode:true \">using System;\r\nusing System.Threading.Tasks;\r\n\r\nnamespace ConsoleApp1\r\n{\r\n    class Program\r\n    {\r\n        static void Main(string[] args)\r\n        {\r\n            var t1 = new TestClass1();\r\n\r\n            t1.TestEvent += (s, e) =&gt;\r\n            {\r\n                Console.WriteLine(\"Test\");\r\n                Console.ReadKey();\r\n            };\r\n\r\n            t1.OnTestMethod();\r\n        }\r\n    }\r\n\r\n    class TestClass1\r\n    {\r\n        private EventHandler testEvent;\r\n        public event EventHandler TestEvent\r\n        {\r\n            add\r\n            {\r\n                testEvent = testEvent + value;\r\n            }\r\n            remove\r\n            {\r\n                testEvent = testEvent - value;\r\n            }\r\n        }\r\n\r\n        public void OnTestMethod() =&gt; testEvent?.Invoke(this, new EventArgs());\r\n    }\r\n\r\n}<\/pre>\n<p>\u30fb\u72ec\u81eaEvent\u5b9a\u7fa9<\/p>\n<pre class=\"lang:c# decode:true \">using System;\r\nusing System.Threading.Tasks;\r\n\r\nnamespace ConsoleApp1\r\n{\r\n    class Program\r\n    {\r\n        static void Main(string[] args)\r\n        {\r\n            var t1 = new TestClass1();\r\n\r\n            t1.TestEvent += (s, e) =&gt;\r\n            {\r\n                Console.WriteLine(e.Id.ToString() + \":\" + e.Msg);\r\n                Console.ReadKey();\r\n            };\r\n            t1.OnTestMethod(1,\"hello\");\r\n            t1.OnTestMethod(2,\"bye\");\r\n\r\n        }\r\n    }\r\n\r\n    \/\/ TestEventArgs\u3092\u5f15\u6570\u306b\u3068\u308b\u72ec\u81eaEvent\u306e\u5b9a\u7fa9\r\n    delegate void TestEventHandler(object sender, TestEventArgs e);\r\n\r\n    class TestClass1\r\n    {\r\n        public event TestEventHandler TestEvent;\r\n\r\n        public void OnTestMethod(int id, string msg) =&gt; TestEvent?.Invoke(this, new TestEventArgs(id, msg));\r\n    }\r\n\r\n    \/\/ \u72ec\u81eaEventArgs\u306e\u5b9a\u7fa9\r\n\r\n    class TestEventArgs : EventArgs\r\n    {\r\n        public int Id;\r\n        public string Msg;\r\n\r\n        public TestEventArgs(int i, string m)\r\n        {\r\n            this.Id = i;\r\n            this.Msg = m;\r\n        }\r\n    }\r\n}<\/pre>\n<p>\u30fbasync + await\u5b9a\u7fa9<\/p>\n<pre class=\"lang:c# decode:true \">using System;\r\nusing System.Threading.Tasks;\r\n\r\nnamespace ConsoleApp1\r\n{\r\n    class Program\r\n    {\r\n        static void Main(string[] args)\r\n        {\r\n            var t1 = new TestClass1();\r\n\r\n            t1.TestEvent += (s, e) =&gt;\r\n            {\r\n                return Task.Run(() =&gt; {\r\n                    Console.WriteLine(e.Id.ToString() + \":\" + e.Msg);\r\n                });\r\n            };\r\n\r\n            t1.OnTestMethod(1,\"hello\");\r\n            Console.ReadKey();\r\n        }\r\n    }\r\n\r\n    \/\/ TestEventArgs\u3092\u5f15\u6570\u306b\u3068\u308b\u72ec\u81eaEvent\u306e\u5b9a\u7fa9\r\n    \/\/ Task\u3092\u8fd4\u3059Event\r\n    delegate Task TestEventHandler(object sender, TestEventArgs e);\r\n\r\n    class TestClass1\r\n    {\r\n        public event TestEventHandler TestEvent;\r\n\r\n        \/\/ async + await\u5b9a\u7fa9\r\n        public async void OnTestMethod(int id, string msg) =&gt; await TestEvent?.Invoke(this, new TestEventArgs(id, msg));\r\n    }\r\n\r\n    \/\/ \u72ec\u81eaEventArgs\u306e\u5b9a\u7fa9\r\n\r\n    class TestEventArgs : EventArgs\r\n    {\r\n        public int Id;\r\n        public string Msg;\r\n\r\n        public TestEventArgs(int i, string m)\r\n        {\r\n            this.Id = i;\r\n            this.Msg = m;\r\n        }\r\n    }\r\n}<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u30fb\u547c\u51fa\uff13\u7a2e\u985e using System; using System.Threading.Tasks; namespace ConsoleApp1 { class Program { static void Main(st &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/appbay.org\/?p=4374\" class=\"more-link\"><span class=\"screen-reader-text\">&#8220;C# \u30a4\u30d9\u30f3\u30c8\u5b9f\u9a13&#8221; \u306e<\/span>\u7d9a\u304d\u3092\u8aad\u3080<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[9],"class_list":["post-4374","post","type-post","status-publish","format-standard","hentry","category-1","tag-c-net"],"_links":{"self":[{"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/posts\/4374","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/appbay.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4374"}],"version-history":[{"count":4,"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/posts\/4374\/revisions"}],"predecessor-version":[{"id":4492,"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/posts\/4374\/revisions\/4492"}],"wp:attachment":[{"href":"https:\/\/appbay.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4374"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/appbay.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4374"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/appbay.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4374"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}