{"id":11,"date":"2024-10-14T14:39:25","date_gmt":"2024-10-14T06:39:25","guid":{"rendered":"http:\/\/www.scuf.cn\/?p=11"},"modified":"2024-10-14T14:39:25","modified_gmt":"2024-10-14T06:39:25","slug":"c%e6%b3%9b%e5%9e%8b%e5%a7%94%e6%89%98%e4%ba%8b%e4%bb%b6%e8%af%a6%e8%a7%a3%e5%8f%8a%e5%ae%9e%e4%be%8b","status":"publish","type":"post","link":"https:\/\/www.scuf.cn\/index.php\/2024\/10\/14\/c%e6%b3%9b%e5%9e%8b%e5%a7%94%e6%89%98%e4%ba%8b%e4%bb%b6%e8%af%a6%e8%a7%a3%e5%8f%8a%e5%ae%9e%e4%be%8b\/","title":{"rendered":"C#\u6cdb\u578b\u59d4\u6258\u4e8b\u4ef6\u8be6\u89e3\u53ca\u5b9e\u4f8b"},"content":{"rendered":"\n<div class=\"wp-block-query is-layout-flow wp-block-query-is-layout-flow\"><ul class=\"wp-block-post-template is-layout-flow wp-block-post-template-is-layout-flow\"><li class=\"wp-block-post post-11 post type-post status-publish format-standard hentry category-uncategorized\">\n<h2 class=\"wp-block-post-title\"><a href=\"https:\/\/www.scuf.cn\/index.php\/2024\/10\/14\/c%e6%b3%9b%e5%9e%8b%e5%a7%94%e6%89%98%e4%ba%8b%e4%bb%b6%e8%af%a6%e8%a7%a3%e5%8f%8a%e5%ae%9e%e4%be%8b\/\" target=\"_self\" >C#\u6cdb\u578b\u59d4\u6258\u4e8b\u4ef6\u8be6\u89e3\u53ca\u5b9e\u4f8b<\/a><\/h2>\n\n\n\n<div class=\"wp-block-post-excerpt\"><p class=\"wp-block-post-excerpt__excerpt\"> <\/p><\/div>\n\n\n<p class=\"wp-block-paragraph\">\u6cdb\u578b\u59d4\u6258\uff1a\u7531\u4e8e\u7c7b\u578b\u53c2\u6570\u51b3\u5b9a\u6cdb\u578b\u59d4\u6258\u80fd\u591f\u63a5\u6536\u4ec0\u4e48\u6837\u7684\u65b9\u6cd5\uff1b\u6240\u4ee5\u76f8\u8f83\u975e\u6cdb\u578b\u59d4\u6258\u66f4\u52a0\u7075\u6d3b\u3002<br>\u58f0\u660e\u81ea\u5b9a\u4e49\u7684\u6cdb\u578b\u59d4\u6258<br>public delegate R ReportResult(T pams);<br>\u5b9a\u4e49\u6cdb\u578b\u59d4\u6258\u53d8\u91cf<br>\/\/\/ \/\/\/ \u6cdb\u578b\u59d4\u6258\u7684\u6784\u9020\u7c7b\u578b\uff1a\u9700\u8981\u4e00\u4e2a\u5f62\u53c2\u4e3aint\u7c7b\u578b\u3001\u8fd4\u56de\u503c\u7c7b\u578b\u4e3abool\u7c7b\u578b\u7684\u65b9\u6cd5\u5bf9\u5176\u8fdb\u884c\u521d\u59cb\u5316 \/\/\/<br>private static ReportResult _isOlderThanHim;<br>\/\/\/ \/\/\/ \u6cdb\u578b\u59d4\u6258\u7684\u6784\u9020\u7c7b\u578b\uff1a\u9700\u8981\u4e00\u4e2a\u5f62\u53c2\u4e3astring\u7c7b\u578b\u3001\u8fd4\u56de\u503c\u7c7b\u578b\u4e3aint\u7c7b\u578b\u7684\u65b9\u6cd5\u5bf9\u9f50\u8fdb\u884c\u521d\u59cb\u5316 \/\/\/<br>private static ReportResult _caculatorAge;<br>\u8d4b\u503c\u5e76\u8c03\u7528\u6cdb\u578b\u59d4\u6258\u53d8\u91cf<br>class Program<br>{<br>\/\/\/ \/\/\/ \u6cdb\u578b\u59d4\u6258\u7684\u6784\u9020\u7c7b\u578b\uff1a\u9700\u8981\u4e00\u4e2a\u5f62\u53c2\u4e3aint\u7c7b\u578b\u3001\u8fd4\u56de\u503c\u7c7b\u578b\u4e3abool\u7c7b\u578b\u7684\u65b9\u6cd5\u5bf9\u5176\u8fdb\u884c\u521d\u59cb\u5316 \/\/\/<br>private static ReportResult _isOlderThanHim;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/\/ &lt;summary&gt;\n\/\/\/ \u6cdb\u578b\u59d4\u6258\u7684\u6784\u9020\u7c7b\u578b\uff1a\u9700\u8981\u4e00\u4e2a\u5f62\u53c2\u4e3astring\u7c7b\u578b\u3001\u8fd4\u56de\u503c\u7c7b\u578b\u4e3aint\u7c7b\u578b\u7684\u65b9\u6cd5\u5bf9\u9f50\u8fdb\u884c\u521d\u59cb\u5316\n\/\/\/ &lt;\/summary&gt;\nprivate static ReportResult&lt;string, int&gt; _caculatorAge;\n\nstatic void Main(string&#91;] args)\n{\n    _isOlderThanHim = new Student().IsAdult;\n    var ret = _isOlderThanHim.Invoke(14);\n    Console.WriteLine(ret);\n\n    _caculatorAge=new Student().AfterYears;\n    var age= _caculatorAge.Invoke(\"5\");\n    Console.WriteLine(age);\n\n    Console.ReadLine();\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/\/ \/\/\/ \u5b9a\u4e49\u4e00\u79cd\u64cd\u4f5c\uff1a\u6839\u636e\u4f20\u5165\u7684\u5b9e\u53c2\u8fd4\u56de\u76f8\u5e94\u7684\u7ed3\u679c \/\/\/<br>\/\/\/<br>\/\/\/<br>\/\/\/<br>public delegate R ReportResult(T pams);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">class Student<br>{<br>private int StudentAge { get; set; } = 15;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/\/ &lt;summary&gt;\n\/\/\/ \u8fd4\u56de\u5b66\u751f\u7684\u5e74\u9f84\u4e0e\u4f20\u5165\u7684\u6570\u503c\u7684\u6bd4\u8f83\u7ed3\u679c\n\/\/\/ &lt;\/summary&gt;\n\/\/\/ &lt;param name=\"age\"&gt;&lt;\/param&gt;\n\/\/\/ &lt;returns&gt;&lt;\/returns&gt;\npublic bool IsAdult(int age)\n{\n    var ret = age &gt;= StudentAge;\n    return ret;\n}\n\n\/\/\/ &lt;summary&gt;\n\/\/\/ \u8fd4\u56de\u5b66\u751fyear\u5e74\u540e\u7684\u5e74\u9f84\n\/\/\/ &lt;\/summary&gt;\n\/\/\/ &lt;param name=\"years\"&gt;&lt;\/param&gt;\n\/\/\/ &lt;returns&gt;&lt;\/returns&gt;\npublic int AfterYears(string years)\n{\n    try\n    {\n        return StudentAge + Convert.ToInt32(years);\n    }\n    catch (Exception ex)\n    {\n        Console.WriteLine(ex);\n        return StudentAge;\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<br>\u8fd0\u884c\u7ed3\u679c\uff1a<br>False<br>20<br>\u5206\u6790\uff1a\u5982\u679c\u60f3\u8981\u8c03\u7528Student\u7c7b\u4e2d\u7684\u4e24\u4e2a\u65b9\u6cd5\u4e00\u4e2a\u53ea\u58f0\u660e\u4e00\u4e2a\u975e\u6cdb\u578b\u59d4\u6258\u662f\u4e0d\u591f\u7684\u3002\u8fd9\u91cc\u4fbf\u4f53\u73b0\u51fa\u4e86\u6cdb\u578b\u59d4\u6258\u7684\u4f18\u70b9\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.NET\u9884\u5b9a\u4e49\u7684\u6cdb\u578b\u59d4\u6258\u7c7b\u578b<br>.NET\u7ed9\u6211\u4eec\u9884\u5b9a\u4e49\u4e86\u5f88\u591a\u6cdb\u578b\u59d4\u6258\uff0c\u65e5\u5e38\u7f16\u7801\u5de5\u4f5c\u4e2d\u4f7f\u7528\u8fd9\u4e9b\u7c7b\u578b\u7684\u6cdb\u578b\u59d4\u6258\u57fa\u672c\u5c31\u5df2\u8db3\u591f\uff0c\u4e0b\u9762\u6211\u4eec\u53ea\u4ecb\u7ecd\u4e09\u4e2a\u5e38\u7528\u7684\u9884\u5b9a\u4e49\u7684\u6cdb\u578b\u59d4\u6258\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e00\u4e2a\uff1aPredicate<br>\u4f7f\u7528\u573a\u666f\uff1a\u5f53\u6211\u4eec\u9700\u8981\u5224\u65ad\u6570\u636e\u662f\u5426\u6ee1\u8db3\u67d0\u4e9b\u6761\u4ef6\u65f6\uff0c\u5c31\u91c7\u7528Predicate\u59d4\u6258\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f7f\u7528\u8fd9\u4e2a\u6cdb\u578b\u59d4\u6258\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u8c03\u7528Student\u7c7b\u4e2d\u8fd4\u56de\u503c\u7c7b\u578b\u4e3abool\u7684\u65b9\u6cd5\u4e86<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">class Program<br>{<br>private static ReportResult _isOlderThanHim;<br>private static Predicate _isOlder;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>static void Main(string&#91;] args)\n{\n    _isOlderThanHim = new Student().IsAdult;\n    var ret = _isOlderThanHim.Invoke(14);\n    Console.WriteLine(ret);\n\n    _isOlder = new Student().IsAdult;\n    var retWithPredicate = _isOlder.Invoke(18);\n    Console.WriteLine(retWithPredicate);\n\n    Console.ReadLine();\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<br>\/*<br>\u8fd0\u884c\u7ed3\u679c\uff1a<br>False<br>True<br>*\/<br>\u7b2c\u4e8c\u4e2a\uff1aFunc<br>\u4f7f\u7528\u573a\u666f\uff1a\u5f53\u6211\u4eec\u5bf9\u6570\u636e\u8fdb\u884c\u64cd\u4f5c\u540e\u3001\u8fd8\u5e0c\u671b\u5c06\u5904\u7406\u7ed3\u679c\u8fd4\u56de\u65f6\uff0c\u5c31\u91c7\u7528Func\u59d4\u6258\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7531\u4e8eFunc\u62e5\u6709\u4e24\u4e2a\u7c7b\u578b\u53c2\u6570\uff0c\u5b83\u63a5\u6536\u7684\u65b9\u6cd5\u8981\u6bd4Predicate\u66f4\u7075\u6d3b\uff1b\u6240\u4ee5\u4f7f\u7528Func\u80fd\u591f\u8c03\u7528Student\u4e2d\u7684\u4e24\u4e2a\u65b9\u6cd5<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">class Program<br>{<br>private static ReportResult _isOlderThanHim;<br>private static ReportResult _caculatorAge;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>private static Predicate&lt;int&gt; _isOlder;\nprivate static Func&lt;string, int&gt; _caculatorAgeFunc;\n\nstatic void Main(string&#91;] args)\n{\n    _isOlderThanHim = new Student().IsAdult;\n    var ret = _isOlderThanHim.Invoke(14);\n    Console.WriteLine(ret);\n\n    _isOlder = new Student().IsAdult;\n    var retWithPredicate = _isOlder.Invoke(18);\n    Console.WriteLine(retWithPredicate);\n\n    _caculatorAge = new Student().AfterYears;\n    var age = _caculatorAge.Invoke(\"5\");\n    Console.WriteLine(age);\n\n    _caculatorAgeFunc = new Student().AfterYears;\n    var ageWithFunc = _caculatorAgeFunc.Invoke(\"7\");\n    Console.WriteLine(ageWithFunc);\n\n    Console.ReadLine();\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<br>\/*<br>\u8f93\u51fa\uff1a<br>20<br>22<br>*\/<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e09\u4e2a\uff1aAction<br>\u4f7f\u7528\u573a\u666f\uff1a\u5f53\u6211\u4eec\u4ec5\u4ec5\u9700\u8981\u7528\u6570\u636e\u6267\u884c\u4e00\u4e9b\u64cd\u4f5c\uff0c\u5e76\u4e0d\u5e0c\u671b\u5f97\u5230\u8fd4\u56de\u503c\u65f6\uff0c\u4f7f\u7528Action\u59d4\u6258<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u4eec\u7ed9Studnet\u7c7b\u4e2d\u6dfb\u52a0\u4e00\u4e2a\u62e5\u6709\u4e00\u4e2a\u5f62\u53c2\uff0c\u8fd4\u56de\u503c\u4e3avoid\u7684\u65b9\u6cd5<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">class Student<br>{<br>private int StudentAge { get; set; } = 15;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/\/ &lt;summary&gt;\n\/\/\/ \u6253\u5370\u51fa\u5b66\u751fyear\u5e74\u540e\u7684\u5e74\u9f84\n\/\/\/ &lt;\/summary&gt;\n\/\/\/ &lt;param name=\"year\"&gt;&lt;\/param&gt;\nprivate void ShowAfterYear(string year)\n{\n    try\n    {\n        Console.WriteLine(StudentAge + Convert.ToInt32(year));\n    }\n    catch (Exception ex)\n    {\n        Console.WriteLine(ex);\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u9762\u6f14\u793a\u5982\u4f55\u4f7f\u7528Action\u59d4\u6258<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">class Program<br>{<br>private static Action _printAgeAciton;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>static void Main(string&#91;] args)\n{\n    _printAgeAciton = new Student().ShowAfterYear;\n    _printAgeAciton.Invoke(\"12\");\n    Console.ReadLine();\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<br>\/*<br>\u8fd0\u884c\u7ed3\u679c\uff1a<br>27<br>*\/<br>C#\u7684LINQ\u7279\u6027\u4e2d\uff0c\u5f88\u591a\u5730\u65b9\u90fd\u4f7f\u7528\u4e86\u6cdb\u578b\u59d4\u6258<br>\u4e0b\u9762\u5c55\u793a\u4e00\u4e0bLinq\u4e2d\u7528\u5230\u7684\u6cdb\u578b\u59d4\u6258\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">namespace GenericDemo<br>{<br>class Program<br>{<br>static void Main(string[] args)<br>{<br>List list = new List();<br>list.Add(new Student() {StudentName = &#8220;\u5510\u4e09&#8221;, StudentAge = 17, ClassGroup = &#8220;\u53f2\u83b1\u514b\u5b66\u9662&#8221;});<br>list.Add(new Student() {StudentName = &#8220;\u98ce\u7b11\u5929&#8221;, StudentAge = 18, ClassGroup = &#8220;\u795e\u98ce\u5b66\u9662&#8221;});<br>list.Add(new Student() {StudentName = &#8220;\u90aa\u6708&#8221;, StudentAge = 22, ClassGroup = &#8220;\u6b66\u9b42\u6bbf&#8221;});<br>list.Add(new Student() {StudentName = &#8220;\u80e1\u70c8\u5a1c&#8221;, StudentAge = 20, ClassGroup = &#8220;\u6b66\u9b42\u6bbf&#8221;});<br>list.Add(new Student() {StudentName = &#8220;\u6731\u7af9\u9752&#8221;, StudentAge = 19, ClassGroup = &#8220;\u53f2\u83b1\u514b\u5b66\u9662&#8221;});<br>list.Add(new Student() {StudentName = &#8220;\u7131&#8221;, StudentAge = 19, ClassGroup = &#8220;\u6b66\u9b42\u6bbf&#8221;});<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>        Console.WriteLine(\"\u904d\u5386\u6240\u6709\u4eba\u5458\");\n        list.ForEach(new Action&lt;Student&gt;(PrintStudentInfo));\n        Console.WriteLine(\"=================\");\n\n        Console.WriteLine(\"\u6309\u7167\u73ed\u7ea7\u5206\u7ec4\");\n        var grouList = list.GroupBy(new Func&lt;Student, string&gt;(GetGroup));\n        foreach (IGrouping&lt;string, Student&gt; grouping in grouList)\n        {\n            foreach (Student student in grouping)\n            {\n                Console.WriteLine(student);\n            }\n        }\n\n        Console.Write(\"\u961f\u4f0d\u4e2d\u6709\u672a\u6210\u5e74\u4e48?\");\n        var isHasNotAdult = list.Any(new Func&lt;Student, bool&gt;(IsNoAdult));\n        Console.WriteLine(isHasNotAdult);\n        Console.WriteLine(\"=================\");\n\n        Console.WriteLine(\"\u627e\u51fa\u672a\u6210\u5e74\u7684\u4eba\u5458\");\n        var isNoAdult = list.Where(new Func&lt;Student, bool&gt;(IsNoAdult));\n        foreach (Student student in isNoAdult)\n        {\n            Console.WriteLine(student);\n        }\n\n        Console.ReadLine();\n    }\n\n    private static void PrintStudentInfo(Student stu)\n    {\n        Console.WriteLine(stu);\n    }\n\n    private static bool IsNoAdult(Student stu)\n    {\n        return stu.StudentAge &lt; 18;\n    }\n\n    private static string GetGroup(Student stu)\n    {\n        return stu.ClassGroup;\n    }\n}\n\nclass Student\n{\n    public string StudentName { get; set; }\n    public int StudentAge { get; set; }\n    public string ClassGroup { get; set; }\n\n    public override string ToString()\n    {\n        return $\"{this.ClassGroup}:{this.StudentName},{this.StudentAge}\";\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<br>\/*<br>\u8fd0\u884c\u7ed3\u679c\uff1a<br>\u904d\u5386\u6240\u6709\u4eba\u5458<br>\u53f2\u83b1\u514b\u5b66\u9662:\u5510\u4e09,17<br>\u795e\u98ce\u5b66\u9662:\u98ce\u7b11\u5929,18<br>\u6b66\u9b42\u6bbf:\u90aa\u6708,22<br>\u6b66\u9b42\u6bbf:\u80e1\u70c8\u5a1c,20<br>\u53f2\u83b1\u514b\u5b66\u9662:\u6731\u7af9\u9752,19<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u6b66\u9b42\u6bbf:\u7131,19<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u6309\u7167\u73ed\u7ea7\u5206\u7ec4<br>\u53f2\u83b1\u514b\u5b66\u9662:\u5510\u4e09,17<br>\u53f2\u83b1\u514b\u5b66\u9662:\u6731\u7af9\u9752,19<br>\u795e\u98ce\u5b66\u9662:\u98ce\u7b11\u5929,18<br>\u6b66\u9b42\u6bbf:\u90aa\u6708,22<br>\u6b66\u9b42\u6bbf:\u80e1\u70c8\u5a1c,20<br>\u6b66\u9b42\u6bbf:\u7131,19<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u961f\u4f0d\u4e2d\u6709\u672a\u6210\u5e74\u4e48?True<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u627e\u51fa\u672a\u6210\u5e74\u7684\u4eba\u5458<br>\u53f2\u83b1\u514b\u5b66\u9662:\u5510\u4e09,17<br>*\/<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u9762\u7684\u6bcf\u4e2aLinq\u65b9\u6cd5\u90fd\u63a5\u6536\u4e00\u4e2a\u6cdb\u578b\u59d4\u6258\u4f5c\u4e3a\u5f62\u53c2\uff1b\u901a\u8fc7\u4e0a\u9762\u7684\u4ee3\u7801\u6211\u4eec\u53ef\u4ee5\u660e\u663e\u611f\u53d7\u5230\u4f7f\u7528\u6cdb\u578b\u59d4\u6258\u80fd\u591f\u7ed9\u6211\u4eec\u5e26\u6765\u5f88\u5927\u7684\u65b9\u4fbf\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee5\u4e0a\u4fbf\u662f\u5bf9\u6cdb\u578b\u59d4\u6258\u7684\u603b\u7ed3\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u200bC#\u89c4\u8303\u6574\u7406\u00b7\u6cdb\u578b\u59d4\u6258\u4e8b\u4ef6<br>\u57fa\u4e8e\u6cdb\u578b\uff0c\u6211\u4eec\u5f97\u4ee5\u5c06\u7c7b\u578b\u53c2\u6570\u5316\uff0c\u4ee5\u4fbf\u66f4\u5927\u8303\u56f4\u5730\u8fdb\u884c\u4ee3\u7801\u590d\u7528\u3002\u540c\u65f6\uff0c\u5b83\u51cf\u5c11\u4e86\u6cdb\u578b\u7c7b\u53ca\u6cdb\u578b\u65b9\u6cd5\u4e2d\u7684\u8f6c\u578b\uff0c\u786e\u4fdd\u4e86\u7c7b\u578b\u5b89\u5168\u3002\u59d4\u6258\u672c\u8eab\u662f\u4e00\u79cd\u5f15\u7528\u7c7b\u578b\uff0c\u5b83\u4fdd\u5b58\u7684\u4e5f\u662f\u6258\u7ba1\u5806\u4e2d\u5bf9\u8c61\u7684\u5f15\u7528\uff0c\u53ea\u4e0d\u8fc7\u8fd9\u4e2a\u5f15\u7528\u6bd4\u8f83\u7279\u6b8a\uff0c\u5b83\u662f\u5bf9\u65b9\u6cd5\u7684\u5f15\u7528\u3002\u4e8b\u4ef6\u672c\u8eab\u4e5f\u662f\u59d4\u6258\uff0c\u5b83\u662f\u59d4\u6258\u7ec4\uff0cC#\u4e2d\u63d0\u4f9b\u4e86\u5173\u952e\u5b57event\u6765\u5bf9\u4e8b\u4ef6\u8fdb\u884c\u7279\u522b\u533a\u5206\u3002<br>\u2003\u2003\u4e00\u65e6\u6211\u4eec\u5f00\u59cb\u7f16\u5199\u7a0d\u5fae\u590d\u6742\u7684C#\u4ee3\u7801\uff0c\u5c31\u80af\u5b9a\u79bb\u4e0d\u5f00\u6cdb\u578b\u3001\u59d4\u6258\u548c\u4e8b\u4ef6\u3002<br><img decoding=\"async\" src=\"https:\/\/img2018.cnblogs.com\/blog\/710776\/201906\/710776-20190613112138058-2026075746.png\" alt=\"\"><br>1.\u603b\u662f\u4f18\u5148\u8003\u8651\u6cdb\u578b#<br>\u6cdb\u578b\u7684\u4f18\u70b9\u662f\u591a\u65b9\u9762\u7684\uff0c\u65e0\u8bba\u662f\u6cdb\u578b\u7c7b\u8fd8\u662f\u6cdb\u578b\u65b9\u6cd5\u90fd\u540c\u65f6\u5177\u5907\u53ef\u91cd\u7528\u6027\u3001\u7c7b\u578b\u5b89\u5168\u548c\u9ad8\u6548\u7387\u7b49\u7279\u6027\uff0c\u8fd9\u90fd\u662f\u975e\u6cdb\u578b\u7c7b\u548c\u975e\u6cdb\u578b\u65b9\u6cd5\u65e0\u6cd5\u5177\u5907\u7684<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2.\u907f\u514d\u5728\u6cdb\u578b\u7c7b\u578b\u4e2d\u58f0\u660e\u9759\u6001\u6210\u5458#<br>\u5b9e\u9645\u4e0a\uff0c\u968f\u7740\u4f60\u4e3aT\u6307\u5b9a\u4e0d\u540c\u7684\u6570\u636e\u7c7b\u578b\uff0cMyList\uff1cT\uff1e\u76f8\u5e94\u5730\u4e5f\u53d8\u6210\u4e86\u4e0d\u540c\u7684\u6570\u636e\u7c7b\u578b\uff0c\u5728\u5b83\u4eec\u4e4b\u95f4\u662f\u4e0d\u5171\u4eab\u9759\u6001\u6210\u5458\u7684\u3002<br>\u4f46\u662f\u82e5T\u6240\u6307\u5b9a\u7684\u6570\u636e\u7c7b\u578b\u662f\u4e00\u81f4\u7684\uff0c\u90a3\u4e48\u4e24\u4e2a\u6cdb\u578b\u5bf9\u8c61\u95f4\u8fd8\u662f\u53ef\u4ee5\u5171\u4eab\u9759\u6001\u6210\u5458\u7684\uff0c\u5982\u5c40\u90e8\u7684List\u548cList\u7684\u53d8\u91cf\u3002\u4f46\u662f\uff0c\u4e3a\u4e86\u89c4\u907f\u56e0\u6b64\u800c\u5f15\u8d77\u7684\u6df7\u6dc6\uff0c\u4ecd\u65e7\u5efa\u8bae\u5728\u5b9e\u9645\u7684\u7f16\u7801\u5de5\u4f5c\u4e2d\uff0c\u5c3d\u91cf\u907f\u514d\u58f0\u660e\u6cdb\u578b\u7c7b\u578b\u7684\u9759\u6001\u6210\u5458\u3002<br>\u975e\u6cdb\u578b\u7c7b\u578b\u4e2d\u7684\u6cdb\u578b\u65b9\u6cd5\u5e76\u4e0d\u4f1a\u5728\u8fd0\u884c\u65f6\u7684\u672c\u5730\u4ee3\u7801\u4e2d\u751f\u6210\u4e0d\u540c\u7684\u7c7b\u578b\u3002<br>\u4f8b\u5982:<br>Copy<br>static void Main(string[]args) { Console.WriteLine(MyList.Func()); Console.WriteLine(MyList.Func()); Console.WriteLine(MyList.Func()); } class MyList { static int count; public static int Func() { return count++; }} \u8f93\u51fa 0 ;1;2<br>3.\u4e3a\u6cdb\u578b\u53c2\u6570\u8bbe\u5b9a\u7ea6\u675f#<br>\u5728\u7f16\u7801\u8fc7\u7a0b\u4e2d\uff0c\u5e94\u8be5\u59cb\u7ec8\u8003\u8651\u4e3a\u6cdb\u578b\u53c2\u6570\u8bbe\u5b9a\u7ea6\u675f\u3002\u7ea6\u675f\u4f7f\u6cdb\u578b\u53c2\u6570\u6210\u4e3a\u4e00\u4e2a\u5b9e\u5b9e\u5728\u5728\u7684\u201c\u5bf9\u8c61\u201d\uff0c\u8ba9\u5b83\u5177\u6709\u4e86\u6211\u4eec\u60f3\u8981\u7684\u884c\u4e3a\u548c\u5c5e\u6027\uff0c\u800c\u4e0d\u4ec5\u4ec5\u662f\u4e00\u4e2aobject\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6307\u5b9a\u7ea6\u675f\u793a\u4f8b\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6307\u5b9a\u53c2\u6570\u662f\u503c\u7c7b\u578b\u3002\uff08\u9664Nullable\u5916\uff09 where T:struct<br>\u6307\u5b9a\u53c2\u6570\u662f\u5f15\u7528\u7c7b\u578b \u3002 where T:class<br>\u6307\u5b9a\u53c2\u6570\u5177\u6709\u65e0\u53c2\u6570\u7684\u516c\u5171\u6784\u9020\u65b9\u6cd5\u3002 where T:new()<br>\u6ce8\u610f\uff0cCLR\u76ee\u524d\u53ea\u652f\u6301\u65e0\u53c2\u6784\u9020\u65b9\u6cd5\u7ea6\u675f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6307\u5b9a\u53c2\u6570\u5fc5\u987b\u662f\u6307\u5b9a\u7684\u57fa\u7c7b\uff0c\u6216\u8005\u6d3e\u751f\u81ea\u6307\u5b9a\u7684\u57fa\u7c7b\u3002<br>\u6307\u5b9a\u53c2\u6570\u5fc5\u987b\u662f\u6307\u5b9a\u7684\u63a5\u53e3\uff0c\u6216\u8005\u5b9e\u73b0\u6307\u5b9a\u7684\u63a5\u53e3\u3002<br>\u6307\u5b9aT\u63d0\u4f9b\u7684\u7c7b\u578b\u53c2\u6570\u5fc5\u987b\u662f\u4e3aU\u63d0\u4f9b\u7684\u53c2\u6570\uff0c\u6216\u8005\u6d3e\u751f\u81ea\u4e3aU\u63d0\u4f9b\u7684\u53c2\u6570\u3002 where T:U<br>\u53ef\u4ee5\u5bf9\u540c\u4e00\u7c7b\u578b\u7684\u53c2\u6570\u5e94\u7528\u591a\u4e2a\u7ea6\u675f\uff0c\u5e76\u4e14\u7ea6\u675f\u81ea\u8eab\u53ef\u4ee5\u662f\u6cdb\u578b\u7c7b\u578b\u3002<br>4.\u4f7f\u7528default\u4e3a\u6cdb\u578b\u7c7b\u578b\u53d8\u91cf\u6307\u5b9a\u521d\u59cb\u503c#<br>\u6709\u4e9b\u7b97\u6cd5\uff0c\u6bd4\u5982\u6cdb\u578b\u96c6\u5408List\uff1cT\uff1e\u7684Find\u7b97\u6cd5\uff0c\u6240\u67e5\u627e\u7684\u5bf9\u8c61\u6709\u53ef\u80fd\u4f1a\u662f\u503c\u7c7b\u578b\uff0c\u4e5f\u6709\u53ef\u80fd\u662f\u5f15\u7528\u7c7b\u578b\u3002\u5728\u8fd9\u79cd\u7b97\u6cd5\u5185\u90e8\uff0c\u6211\u4eec\u5e38\u5e38\u4f1a\u4e3a\u8fd9\u4e9b\u503c\u7c7b\u578b\u53d8\u91cf\u6216\u5f15\u7528\u7c7b\u578b\u53d8\u91cf\u6307\u5b9a\u9ed8\u8ba4\u503c\u3002\u4e8e\u662f\uff0c\u95ee\u9898\u6765\u4e86\uff1a\u503c\u7c7b\u578b\u53d8\u91cf\u7684\u9ed8\u8ba4\u521d\u59cb\u503c\u662f0\u503c\uff0c\u800c\u5f15\u7528\u7c7b\u578b\u53d8\u91cf\u7684\u9ed8\u8ba4\u521d\u59cb\u503c\u662fnull\u503c\uff0c\u663e\u7136\uff0c\u8fd9\u4f1a\u5bfc\u81f4\u4e0b\u9762\u7684\u4ee3\u7801\u7f16\u8bd1\u51fa\u9519\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>public T Func() { T t=null; T t=0; return t; }<br>\u4ee3\u7801&#8221;T t=null\uff1b&#8221;\u5728Visual Studio\u7f16\u8bd1\u5668\u4e2d\u4f1a\u8b66\u793a\uff1a\u9519\u8bef1\u4e0d\u80fd\u5c06Null\u8f6c\u6362\u4e3a\u7c7b\u578b\u5f62\u53c2\u201cT\u201d\uff0c\u56e0\u4e3a\u5b83\u53ef\u80fd\u662f\u4e0d\u53ef\u4ee5\u4e3anull\u503c\u7684\u7c7b\u578b\u3002\u8bf7\u8003\u8651\u6539\u7528\u201cdefault(T)\u201d.<br>\u4ee3\u7801&#8221;T t=0\uff1b&#8221;\u4f1a\u8b66\u793a\uff1a\u9519\u8bef1\u65e0\u6cd5\u5c06\u7c7b\u578b\u201cint\u201d\u9690\u5f0f\u8f6c\u6362\u4e3a\u201cT\u201d\u3002<br>\u6539\u8fdb<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>public T Func() { T t=default(T); return t; }<br>5.\u4f7f\u7528FCL\u4e2d\u7684\u59d4\u6258\u58f0\u660e#<br>\u8981\u6ce8\u610fFCL\u4e2d\u5b58\u5728\u4e09\u7c7b\u8fd9\u6837\u7684\u59d4\u6258\u58f0\u660e\uff0c\u5b83\u4eec\u5206\u522b\u662f\uff1aAction\u3001Func\u3001Predicate\u3002\u5c24\u5176\u662f\u5728\u5b83\u4eec\u7684\u6cdb\u578b\u7248\u672c\u51fa\u6765\u4ee5\u540e\uff0c\u5df2\u7ecf\u80fd\u591f\u6ee1\u8db3\u6211\u4eec\u5728\u5b9e\u9645\u7f16\u7801\u8fc7\u7a0b\u4e2d\u7684\u5927\u90e8\u5206\u9700\u8981\u3002<br>\u6211\u4eec\u5e94\u8be5\u4e60\u60ef\u5728\u4ee3\u7801\u4e2d\u4f7f\u7528\u8fd9\u7c7b\u59d4\u6258\u6765\u4ee3\u66ff\u81ea\u5df1\u7684\u59d4\u6258\u58f0\u660e\u3002<br>\u9664\u4e86Action\u3001Func\u548cPredicate\u5916\uff0cFCL\u4e2d\u8fd8\u6709\u7528\u4e8e\u8868\u793a\u7279\u6b8a\u542b\u4e49\u7684\u59d4\u6258\u58f0\u660e\u3002<br>Copy<br>\/\/\u5982\u7528\u4e8e\u8868\u793a\u6ce8\u518c\u4e8b\u4ef6\u65b9\u6cd5\u7684\u59d4\u6258\u58f0\u660e\uff1a public delegate void EventHandler(object sender,EventArgs e); public delegate void EventHandler(object sender,TEventArgs e); \/\/\u8868\u793a\u7ebf\u7a0b\u65b9\u6cd5\u7684\u59d4\u6258\u58f0\u660e\uff1a public delegate void ThreadStart(); public delegate void ParameterizedThreadStart(object obj); \/\/\u8868\u793a\u5f02\u6b65\u56de\u8c03\u7684\u59d4\u6258\u58f0\u660e\uff1a public delegate void AsyncCallback(IAsyncResult ar);<br>\u5728FCL\u4e2d\u6bcf\u4e00\u7c7b\u59d4\u6258\u58f0\u660e\u90fd\u4ee3\u8868\u4e00\u7c7b\u7279\u6b8a\u7684\u7528\u9014\uff0c\u867d\u7136\u53ef\u4ee5\u4f7f\u7528\u81ea\u5df1\u7684\u59d4\u6258\u58f0\u660e\u6765\u4ee3\u66ff\uff0c\u4f46\u662f\u8fd9\u6837\u505a\u4e0d\u4ec5\u6ca1\u6709\u5fc5\u8981\uff0c\u800c\u4e14\u4f1a\u8ba9\u4ee3\u7801\u5931\u53bb\u7b80\u6d01\u6027\u548c\u6807\u51c6\u6027\u3002\u5728\u6211\u4eec\u5b9e\u73b0\u81ea\u5df1\u7684\u59d4\u6258\u58f0\u660e\u524d\uff0c\u5e94\u8be5\u9996\u5148\u67e5\u770bMSDN\uff0c\u786e\u4fe1\u6709\u5fc5\u8981\u4e4b\u540e\u624d\u8fd9\u6837\u505a\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">6.\u4f7f\u7528Lambda\u8868\u8fbe\u5f0f\u4ee3\u66ff\u65b9\u6cd5\u548c\u533f\u540d\u65b9\u6cd5#<br>\u5728\u5b9e\u9645\u7684\u7f16\u7801\u5de5\u4f5c\u4e2d\u719f\u7ec3\u8fd0\u7528\u5b83\uff0c\u907f\u514d\u5199\u51fa\u70e6\u7410\u4e14\u4e0d\u7f8e\u89c2\u7684\u4ee3\u7801\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">7.\u5c0f\u5fc3\u95ed\u5305\u4e2d\u7684\u9677\u9631#<br>\u5982\u679c\u533f\u540d\u65b9\u6cd5\uff08Lambda\u8868\u8fbe\u5f0f\uff09\u5f15\u7528\u4e86\u67d0\u4e2a\u5c40\u90e8\u53d8\u91cf\uff0c\u7f16\u8bd1\u5668\u5c31\u4f1a\u81ea\u52a8\u5c06\u8be5\u5f15\u7528\u63d0\u5347\u5230\u8be5\u95ed\u5305\u5bf9\u8c61\u4e2d\uff0c\u5373\u5c06for\u5faa\u73af\u4e2d\u7684\u53d8\u91cfi \u4fee\u6539\u6210\u4e86\u5f15\u7528\u95ed\u5305\u5bf9\u8c61\uff08\u7f16\u8bd1\u5668\u81ea\u52a8\u521b\u5efa\uff09\u7684\u516c\u5171\u53d8\u91cfi\u3002<br>\u793a\u4f8b\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>static void Main(string[]args) { Listlists=new List(); for(int i=0;i&lt;5;i++) { Action t=()=&gt; { Console.WriteLine(i.ToString()); }; lists.Add(t); } foreach(Action t in lists) { t(); } }<br>\u4ee5\u4e0a\u7ed3\u679c\u5168\u90e8\u8f93\u51fa5\uff1b<br>\u53e6\u5916\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff1b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>static void Main\uff08string[]args\uff09 { List\uff1cAction\uff1elists=new List\uff1cAction\uff1e\uff08\uff09\uff1b TempClass tempClass=new TempClass\uff08\uff09\uff1b for\uff08tempClass.i=0\uff1btempClass.i\uff1c5\uff1btempClass.i++\uff09 { Action t=tempClass.TempFuc\uff1b lists.Add\uff08t\uff09\uff1b } foreach\uff08Action t in lists\uff09 { t\uff08\uff09\uff1b } } class TempClass { public int i\uff1b public void TempFuc\uff08\uff09 { Console.WriteLine\uff08i.ToString\uff08\uff09\uff09\uff1b } }<br>\u8fd9\u6bb5\u4ee3\u7801\u6240\u6f14\u793a\u7684\u5c31\u662f\u95ed\u5305\u5bf9\u8c61\u3002\u6240\u8c13\u95ed\u5305\u5bf9\u8c61\uff0c\u6307\u7684\u662f\u4e0a\u9762\u8fd9\u79cd\u60c5\u5f62\u4e2d\u7684TempClass\u5bf9\u8c61\uff08\u5728\u7b2c\u4e00\u6bb5\u4ee3\u7801\u4e2d\uff0c\u4e5f\u5c31\u662f\u7f16\u8bd1\u5668\u4e3a\u6211\u4eec\u751f\u6210\u7684\u201c\uff1c\uff1ec__DisplayClass2\u201d\u5bf9\u8c61\uff09\u3002\u5982\u679c\u533f\u540d\u65b9\u6cd5\uff08Lambda\u8868\u8fbe\u5f0f\uff09\u5f15\u7528\u4e86\u67d0\u4e2a\u5c40\u90e8\u53d8\u91cf\uff0c\u7f16\u8bd1\u5668\u5c31\u4f1a\u81ea\u52a8\u5c06\u8be5\u5f15\u7528\u63d0\u5347\u5230\u8be5\u95ed\u5305\u5bf9\u8c61\u4e2d\uff0c\u5373\u5c06for\u5faa\u73af\u4e2d\u7684\u53d8\u91cfi\u4fee\u6539\u6210\u4e86\u5f15\u7528\u95ed\u5305\u5bf9\u8c61\u7684\u516c\u5171\u53d8\u91cfi\u3002\u8fd9\u6837\u4e00\u6765\uff0c\u5373\u4f7f\u4ee3\u7801\u6267\u884c\u540e\u79bb\u5f00\u4e86\u539f\u5c40\u90e8\u53d8\u91cfi\u7684\u4f5c\u7528\u57df\uff08\u5982for\u5faa\u73af\uff09\uff0c\u5305\u542b\u8be5\u95ed\u5305\u5bf9\u8c61\u7684\u4f5c\u7528\u57df\u4e5f\u8fd8\u5b58\u5728\u3002\u7406\u89e3\u4e86\u8fd9\u4e00\u70b9\uff0c\u5c31\u80fd\u7406\u89e3\u4ee3\u7801\u7684\u8f93\u51fa\u4e86\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">8.\u4e86\u89e3\u59d4\u6258\u7684\u672c\u8d28#<br>\u7406\u89e3C#\u4e2d\u7684\u59d4\u6258\u9700\u8981\u628a\u63e1\u4e24\u4e2a\u8981\u70b9\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u59d4\u6258\u662f\u65b9\u6cd5\u6307\u9488\u3002<br>\u59d4\u6258\u662f\u4e00\u4e2a\u7c7b\uff0c\u5f53\u5bf9\u5176\u8fdb\u884c\u5b9e\u4f8b\u5316\u7684\u65f6\u5019\uff0c\u8981\u5c06\u5f15\u7528\u65b9\u6cd5\u4f5c\u4e3a\u5b83\u7684\u6784\u9020\u65b9\u6cd5\u7684\u53c2\u6570\u3002<br>9.\u4f7f\u7528event\u5173\u952e\u5b57\u4e3a\u59d4\u6258\u65bd\u52a0\u4fdd\u62a4#<br>\u9996\u5148\u6ca1\u6709event\u52a0\u6301\u7684\u59d4\u6258\uff0c\u6211\u4eec\u53ef\u4ee5\u5bf9\u5b83\u968f\u65f6\u8fdb\u884c\u4fee\u6539\u8d4b\u503c\uff0c\u4ee5\u81f3\u4e8e\u4e00\u4e2a\u65b9\u6cd5\u6539\u52a8\u4e86\u53e6\u4e00\u4e2a\u65b9\u6cd5\u7684\u59d4\u6258\u94fe\u5f15\u7528\uff0c\u6bd4\u5982\u8d4b\u503c\u4e3anull\uff0c\u53e6\u5916\u4e00\u4e2a\u65b9\u6cd5\u4e2d\u8c03\u7528\u7684\u65f6\u5019\u5c06\u629b\u51fa\u5f02\u5e38\u3002<br>\u5982\u679c\u6709event\u52a0\u6301\u7684\u65f6\u5019\uff0c\u6211\u4eec\u4fee\u6539\u7684\u65f6\u5019\uff0c\u6bd4\u5982\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>fl.FileUploaded=null; fl.FileUploaded=Progress; fl.FileUploaded(10);<br>\u4ee5\u4e0a\u4ee3\u7801\u7f16\u8bd1\u4f1a\u51fa\u73b0\u9519\u8bef\u8b66\u544a\uff1a<br>\u4e8b\u4ef6 \u201cConsoleApplication1.FileUploader.FileUploaded \u201d<br>\u53ea\u80fd\u51fa\u73b0\u5728+=\u6216-=\u7684\u5de6\u8fb9\uff08\u4ece\u7c7b\u578b\u201cConsoleApplication1.FileUploader\u201d\u4e2d\u4f7f\u7528\u65f6\u9664\u5916\uff09<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">10.\u5b9e\u73b0\u6807\u51c6\u7684\u4e8b\u4ef6\u6a21\u578b#<br>\u6709\u4e86\u4e0a\u9762\u7684event\u52a0\u6301\uff0c\u4f46\u662f\u8fd8\u4e0d\u80fd\u591f\u89c4\u8303\u3002<br>EventHandler\u7684\u539f\u578b\u58f0\u660e\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>public delegate void EventHandler(object sender,EventArgs e);<br>\u5fae\u8f6f\u4e3a\u4e8b\u4ef6\u6a21\u578b\u8bbe\u5b9a\u7684\u51e0\u4e2a\u89c4\u8303\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u59d4\u6258\u7c7b\u578b\u7684\u540d\u79f0\u4ee5EventHandler\u7ed3\u675f\uff1b<br>\u59d4\u6258\u539f\u578b\u8fd4\u56de\u503c\u4e3avoid\uff1b<br>\u59d4\u6258\u539f\u578b\u5177\u6709\u4e24\u4e2a\u53c2\u6570\uff1asender\u8868\u793a\u4e8b\u4ef6\u89e6\u53d1\u8005\uff0ce\u8868\u793a\u4e8b\u4ef6\u53c2\u6570\uff1b<br>\u4e8b\u4ef6\u53c2\u6570\u7684\u540d\u79f0\u4ee5EventArgs\u7ed3\u675f\u3002<br>11.\u4f7f\u7528\u6cdb\u578b\u53c2\u6570\u517c\u5bb9\u6cdb\u578b\u63a5\u53e3\u7684\u4e0d\u53ef\u53d8\u6027#<br>\u8ba9\u8fd4\u56de\u503c\u7c7b\u578b\u8fd4\u56de\u6bd4\u58f0\u660e\u7684\u7c7b\u578b\u6d3e\u751f\u7a0b\u5ea6\u66f4\u5927\u7684\u7c7b\u578b\uff0c\u5c31\u662f\u201c\u534f\u53d8\u201d\u3002<br>\u7f16\u8bd1\u5668\u5bf9\u4e8e\u63a5\u53e3\u548c\u59d4\u6258\u7c7b\u578b\u53c2\u6570\u7684\u68c0\u67e5\u662f\u975e\u5e38\u4e25\u683c\u7684\uff0c\u9664\u975e\u7528\u5173\u952e\u5b57out\u7279\u522b\u58f0\u660e\uff0c\u4e0d\u7136\u8fd9\u6bb5\u4ee3\u7801\u53ea\u4f1a\u7f16\u8bd1\u5931\u8d25\u3002\u6bd4\u5982\u4e0b\u4f8b<br>\u4f8b\u5982\uff1a<br>Copy<br>class Program{ static void Main(string[]args) { ISalarys=new BaseSalaryCounter(); PrintSalary(s); } static void PrintSalary(ISalarys) { s.Pay(); } } interface ISalary { void Pay(); } class BaseSalaryCounter:ISalary { public void Pay() { Console.WriteLine(&#8220;Pay base salary&#8221;); } } class Employee { public string Name{get;set;} } class Programmer:Employee{} class Manager:Employee{}<br>\u62a5\u9519\uff1a \u65e0\u6cd5\u4ece\u201cConsoleApplication4.ISalary\u201d\u8f6c\u6362\u4e3a\u201cConsoleApplication4.ISalary\u201d<br>\u8981\u8ba9PrintSalary\u5b8c\u6210\u9700\u6c42\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u6cdb\u578b\u7c7b\u578b\u53c2\u6570\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>static void PrintSalary(ISalarys) { s.Pay(); }<br>\u5b9e\u9645\u4e0a\uff0c\u53ea\u8981\u6cdb\u578b\u7c7b\u578b\u53c2\u6570\u5728\u4e00\u4e2a\u63a5\u53e3\u58f0\u660e\u4e2d\u4e0d\u88ab\u7528\u6765\u4f5c\u4e3a\u65b9\u6cd5\u7684\u8f93\u5165\u53c2\u6570\uff0c\u6211\u4eec\u90fd\u53ef\u59d1\u4e14\u628a\u5b83\u770b\u6210\u662f\u201c\u8fd4\u56de\u503c\u201d\u7c7b\u578b\u7684\u3002\u6240\u4ee5\uff0c\u6cdb\u578b\u7c7b\u578b\u53c2\u6570\u8fd9\u79cd\u6a21\u5f0f\u662f\u6ee1\u8db3\u201c\u534f\u53d8\u201d\u7684\u5b9a\u4e49\u7684\u3002\u4f46\u662f\uff0c\u53ea\u8981\u5c06T\u4f5c\u4e3a\u8f93\u5165\u53c2\u6570\uff0c\u4fbf\u4e0d\u6ee1\u8db3\u201c\u534f\u53d8\u201d\u7684\u5b9a\u4e49\u4e86\u3002\u5982\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>interface ISalary { void Pay(T t); }<br>\u7f16\u8bd1\u4f1a\u63d0\u793a\uff1a\u5dee\u5f02\u65e0\u6548:\u7c7b\u578b\u53c2\u6570\u201cT\u201d\u5fc5\u987b\u662f\u5728\u201cISalary.Pay(T)\u201d\u4e0a\u6709\u6548\u7684\u9006\u53d8\u5f0f\u3002\u201cT\u201d\u4e3a\u534f\u53d8\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">12.\u8ba9\u63a5\u53e3\u4e2d\u7684\u6cdb\u578b\u53c2\u6570\u652f\u6301\u534f\u53d8#<br>\u9664\u4e8611\u4e2d\u63d0\u5230\u7684\u4f7f\u7528\u6cdb\u578b\u53c2\u6570\u517c\u5bb9\u6cdb\u578b\u63a5\u53e3\u7684\u4e0d\u53ef\u53d8\u6027\u5916\uff0c\u8fd8\u6709\u4e00\u79cd\u529e\u6cd5\u5c31\u662f\u4e3a\u63a5\u53e3\u4e2d\u7684\u6cdb\u578b\u58f0\u660e\u52a0\u4e0aout\u5173\u952e\u5b57\u6765\u652f\u6301\u534f\u53d8\u3002<br>out\u5173\u952e\u5b57\u662fFCL 4.0\u4e2d\u65b0\u589e\u7684\u529f\u80fd\uff0c\u5b83\u53ef\u4ee5\u5728\u6cdb\u578b\u63a5\u53e3\u548c\u59d4\u6258\u4e2d\u4f7f\u7528\uff0c\u7528\u6765\u8ba9\u7c7b\u578b\u53c2\u6570\u652f\u6301\u534f\u53d8\u6027\u3002\u901a\u8fc7\u534f\u53d8\uff0c\u53ef\u4ee5\u4f7f\u7528\u6bd4\u58f0\u660e\u7684\u53c2\u6570\u6d3e\u751f\u7c7b\u578b\u66f4\u5927\u7684\u53c2\u6570\u3002\u901a\u8fc7\u4e0b\u9762\u4f8b\u5b50\u6211\u4eec\u5e94\u8be5\u80fd\u7406\u89e3\u8fd9\u79cd\u5e94\u7528\u3002<br>\u6bd4\u5982\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>static void Main(string[]args) { ISalarys=new BaseSalaryCounter(); ISalaryt=new BaseSalaryCounter(); PrintSalary(s); PrintSalary(t); } static void PrintSalary(ISalarys)\/\/\u7528\u6cd5\u6b63\u786e { s.Pay(); } } interface ISalary \/\/\u4f7f\u7528\u4e86out\u5173\u952e\u5b57 { void Pay(); }<br>FCL 4.0\u5bf9\u591a\u4e2a\u63a5\u53e3\u8fdb\u884c\u4e86\u4fee\u6539\u4ee5\u652f\u6301\u534f\u53d8\uff0c\u5982IEnumerable\uff1cout T\uff1e\u3001IEnumerator\uff1cout T\uff1e\u3001IQuerable\uff1cout T\uff1e\u7b49\u3002\u7531\u4e8eIEnumerable\uff1cout T\uff1e\u73b0\u5728\u652f\u6301\u534f\u53d8\uff0c\u6240\u4ee5\u4e0a\u6bb5\u4ee3\u7801\u5728FCL 4.0\u4e2d\u80fd\u8fd0\u884c\u5f97\u5f88\u597d\u3002<br>\u5728\u6211\u4eec\u81ea\u5df1\u7684\u4ee3\u7801\u4e2d\uff0c\u5982\u679c\u8981\u7f16\u5199\u6cdb\u578b\u63a5\u53e3\uff0c\u9664\u975e\u786e\u5b9a\u8be5\u63a5\u53e3\u4e2d\u7684\u6cdb\u578b\u53c2\u6570\u4e0d\u6d89\u53ca\u53d8\u4f53\uff0c\u5426\u5219\u90fd\u5efa\u8bae\u52a0\u4e0aout\u5173\u952e\u5b57\u3002\u534f\u53d8\u589e\u5927\u4e86\u63a5\u53e3\u7684\u4f7f\u7528\u8303\u56f4\uff0c\u800c\u4e14\u51e0\u4e4e\u4e0d\u4f1a\u5e26\u6765\u4ec0\u4e48\u526f\u4f5c\u7528\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">13.\u7406\u89e3\u59d4\u6258\u4e2d\u7684\u534f\u53d8#<br>\u59d4\u6258\u4e2d\u7684\u6cdb\u578b\u53d8\u91cf\u5929\u7136\u662f\u90e8\u5206\u652f\u6301\u534f\u53d8\u7684\u3002<br>\u6bd4\u5982\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>public delegate T GetEmployeeHanlder(string name); static void Main(){ GetEmployeeHanldergetAEmployee=GetAManager; Employee e=getAEmployee(&#8220;Mike&#8221;); }<br>\u56e0\u4e3a\u5b58\u5728\u4e0b\u9762\u8fd9\u6837\u4e00\u79cd\u60c5\u51b5\uff0c\u6240\u4ee5\u7f16\u8bd1\u901a\u4e0d\u8fc7\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>GetEmployeeHanldergetAManager=GetAManager;GetEmployeeHanldergetAEmployee=getAManager; static Manager GetAManager(string name) { Console.WriteLine(&#8220;\u6211\u662f\u7ecf\u7406:&#8221;+name); return new Manager(){Name=name}; } static Employee GetAEmployee(string name) { Console.WriteLine(&#8220;\u6211\u662f\u96c7\u5458:&#8221;+name); return new Employee(){Name=name}; }<br>\u8981\u8ba9\u4e0a\u9762\u7684\u4ee3\u7801\u7f16\u8bd1\u901a\u8fc7\uff0c\u540c\u6837\u9700\u8981\u4e3a\u59d4\u6258\u4e2d\u7684\u6cdb\u578b\u53c2\u6570\u6307\u5b9aout\u5173\u952e\u5b57\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>public delegate T GetEmployeeHanlder(string name);<br>FCL 4.0\u4e2d\u7684\u4e00\u4e9b\u59d4\u6258\u58f0\u660e\u5df2\u7ecf\u7528out\u5173\u952e\u5b57\u6765\u8ba9\u59d4\u6258\u652f\u6301\u534f\u53d8\u4e86\uff0c\u5982\u6211\u4eec\u5e38\u5e38\u4f1a\u4f7f\u7528\u5230\u7684\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>public delegate TResult Func()\u548c public delegate TOutput Converter(TInput input)<br>14.\u4e3a\u6cdb\u578b\u7c7b\u578b\u53c2\u6570\u6307\u5b9a\u9006\u53d8#<br>\u9006\u53d8\u662f\u6307\u65b9\u6cd5\u7684\u53c2\u6570\u53ef\u4ee5\u662f\u59d4\u6258\u6216\u6cdb\u578b\u63a5\u53e3\u7684\u53c2\u6570\u7c7b\u578b\u7684\u57fa\u7c7b\u3002FCL 4.0\u4e2d\u652f\u6301\u9006\u53d8\u7684\u5e38\u7528\u59d4\u6258\u6709\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>Func Predicate \/\/\u5e38\u7528\u6cdb\u578b\u63a5\u53e3\u6709\uff1a IComparer<br>\u4e3e\u4f8b\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>class Program { static void Main() { Programmer p=new Programmer{Name=&#8221;Mike&#8221;}; Manager m=new Manager{Name=&#8221;Steve&#8221;}; Test(p,m); } static void Test(IMyComparablet1,T t2) { \/\/\u7701\u7565 }} public interface IMyComparable { int Compare(T other); } public class Employee:IMyComparable { public string Name{get;set;} public int Compare(Employee other) { return Name.CompareTo(other.Name); } } public class Programmer:Employee,IMyComparable { public int Compare(Programmer other) { return Name.CompareTo(other.Name); } } public class Manager:Employee{ }<br>\u5728\u4e0a\u9762\u7684\u8fd9\u4e2a\u4f8b\u5b50\u4e2d\uff0c\u5982\u679c\u4e0d\u4e3a\u63a5\u53e3IMy-Comparable\u7684\u6cdb\u578b\u53c2\u6570T\u6307\u5b9ain\u5173\u952e\u5b57\uff0c\u5c06\u4f1a\u5bfc\u81f4Test\uff08p, m\uff09\u7f16\u8bd1\u9519\u8bef\u3002\u7531\u4e8e\u5f15\u5165\u4e86\u63a5\u53e3\u7684\u9006\u53d8\u6027\uff0c\u8fd9\u8ba9\u65b9\u6cd5Test\u652f\u6301\u4e86\u66f4\u591a\u7684\u5e94\u7528\u573a\u666f\u3002\u5728FCL4.0\u4e4b\u540e\u7248\u672c\u7684\u5b9e\u9645\u7f16\u7801\u4e2d\u5e94\u8be5\u59cb\u7ec8\u6ce8\u610f\u8fd9\u4e00\u70b9\u3002<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n<div class=\"wp-block-post-date\"><time datetime=\"2024-10-14T14:39:25+08:00\">2024\u5e7410\u670814\u65e5<\/time><\/div>\n<\/li><li class=\"wp-block-post post-1 post type-post status-publish format-standard hentry category-uncategorized\">\n<h2 class=\"wp-block-post-title\"><a href=\"https:\/\/www.scuf.cn\/index.php\/2024\/10\/14\/hello-world\/\" target=\"_self\" >\u4e16\u754c\uff0c\u60a8\u597d\uff01<\/a><\/h2>\n\n\n\n<div class=\"wp-block-post-excerpt\"><p class=\"wp-block-post-excerpt__excerpt\">\u6b22\u8fce\u4f7f\u7528 WordPress\u3002\u8fd9\u662f\u60a8\u7684\u7b2c\u4e00\u7bc7\u6587\u7ae0\u3002\u7f16\u8f91\u6216\u5220\u9664\u5b83\uff0c\u7136\u540e\u5f00\u59cb\u5199\u4f5c\u5427\uff01 <\/p><\/div>\n\n\n<p class=\"wp-block-paragraph\">\u6cdb\u578b\u59d4\u6258\uff1a\u7531\u4e8e\u7c7b\u578b\u53c2\u6570\u51b3\u5b9a\u6cdb\u578b\u59d4\u6258\u80fd\u591f\u63a5\u6536\u4ec0\u4e48\u6837\u7684\u65b9\u6cd5\uff1b\u6240\u4ee5\u76f8\u8f83\u975e\u6cdb\u578b\u59d4\u6258\u66f4\u52a0\u7075\u6d3b\u3002<br>\u58f0\u660e\u81ea\u5b9a\u4e49\u7684\u6cdb\u578b\u59d4\u6258<br>public delegate R ReportResult(T pams);<br>\u5b9a\u4e49\u6cdb\u578b\u59d4\u6258\u53d8\u91cf<br>\/\/\/ \/\/\/ \u6cdb\u578b\u59d4\u6258\u7684\u6784\u9020\u7c7b\u578b\uff1a\u9700\u8981\u4e00\u4e2a\u5f62\u53c2\u4e3aint\u7c7b\u578b\u3001\u8fd4\u56de\u503c\u7c7b\u578b\u4e3abool\u7c7b\u578b\u7684\u65b9\u6cd5\u5bf9\u5176\u8fdb\u884c\u521d\u59cb\u5316 \/\/\/<br>private static ReportResult _isOlderThanHim;<br>\/\/\/ \/\/\/ \u6cdb\u578b\u59d4\u6258\u7684\u6784\u9020\u7c7b\u578b\uff1a\u9700\u8981\u4e00\u4e2a\u5f62\u53c2\u4e3astring\u7c7b\u578b\u3001\u8fd4\u56de\u503c\u7c7b\u578b\u4e3aint\u7c7b\u578b\u7684\u65b9\u6cd5\u5bf9\u9f50\u8fdb\u884c\u521d\u59cb\u5316 \/\/\/<br>private static ReportResult _caculatorAge;<br>\u8d4b\u503c\u5e76\u8c03\u7528\u6cdb\u578b\u59d4\u6258\u53d8\u91cf<br>class Program<br>{<br>\/\/\/ \/\/\/ \u6cdb\u578b\u59d4\u6258\u7684\u6784\u9020\u7c7b\u578b\uff1a\u9700\u8981\u4e00\u4e2a\u5f62\u53c2\u4e3aint\u7c7b\u578b\u3001\u8fd4\u56de\u503c\u7c7b\u578b\u4e3abool\u7c7b\u578b\u7684\u65b9\u6cd5\u5bf9\u5176\u8fdb\u884c\u521d\u59cb\u5316 \/\/\/<br>private static ReportResult _isOlderThanHim;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/\/ &lt;summary&gt;\n\/\/\/ \u6cdb\u578b\u59d4\u6258\u7684\u6784\u9020\u7c7b\u578b\uff1a\u9700\u8981\u4e00\u4e2a\u5f62\u53c2\u4e3astring\u7c7b\u578b\u3001\u8fd4\u56de\u503c\u7c7b\u578b\u4e3aint\u7c7b\u578b\u7684\u65b9\u6cd5\u5bf9\u9f50\u8fdb\u884c\u521d\u59cb\u5316\n\/\/\/ &lt;\/summary&gt;\nprivate static ReportResult&lt;string, int&gt; _caculatorAge;\n\nstatic void Main(string&#91;] args)\n{\n    _isOlderThanHim = new Student().IsAdult;\n    var ret = _isOlderThanHim.Invoke(14);\n    Console.WriteLine(ret);\n\n    _caculatorAge=new Student().AfterYears;\n    var age= _caculatorAge.Invoke(\"5\");\n    Console.WriteLine(age);\n\n    Console.ReadLine();\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/\/ \/\/\/ \u5b9a\u4e49\u4e00\u79cd\u64cd\u4f5c\uff1a\u6839\u636e\u4f20\u5165\u7684\u5b9e\u53c2\u8fd4\u56de\u76f8\u5e94\u7684\u7ed3\u679c \/\/\/<br>\/\/\/<br>\/\/\/<br>\/\/\/<br>public delegate R ReportResult(T pams);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">class Student<br>{<br>private int StudentAge { get; set; } = 15;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/\/ &lt;summary&gt;\n\/\/\/ \u8fd4\u56de\u5b66\u751f\u7684\u5e74\u9f84\u4e0e\u4f20\u5165\u7684\u6570\u503c\u7684\u6bd4\u8f83\u7ed3\u679c\n\/\/\/ &lt;\/summary&gt;\n\/\/\/ &lt;param name=\"age\"&gt;&lt;\/param&gt;\n\/\/\/ &lt;returns&gt;&lt;\/returns&gt;\npublic bool IsAdult(int age)\n{\n    var ret = age &gt;= StudentAge;\n    return ret;\n}\n\n\/\/\/ &lt;summary&gt;\n\/\/\/ \u8fd4\u56de\u5b66\u751fyear\u5e74\u540e\u7684\u5e74\u9f84\n\/\/\/ &lt;\/summary&gt;\n\/\/\/ &lt;param name=\"years\"&gt;&lt;\/param&gt;\n\/\/\/ &lt;returns&gt;&lt;\/returns&gt;\npublic int AfterYears(string years)\n{\n    try\n    {\n        return StudentAge + Convert.ToInt32(years);\n    }\n    catch (Exception ex)\n    {\n        Console.WriteLine(ex);\n        return StudentAge;\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<br>\u8fd0\u884c\u7ed3\u679c\uff1a<br>False<br>20<br>\u5206\u6790\uff1a\u5982\u679c\u60f3\u8981\u8c03\u7528Student\u7c7b\u4e2d\u7684\u4e24\u4e2a\u65b9\u6cd5\u4e00\u4e2a\u53ea\u58f0\u660e\u4e00\u4e2a\u975e\u6cdb\u578b\u59d4\u6258\u662f\u4e0d\u591f\u7684\u3002\u8fd9\u91cc\u4fbf\u4f53\u73b0\u51fa\u4e86\u6cdb\u578b\u59d4\u6258\u7684\u4f18\u70b9\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.NET\u9884\u5b9a\u4e49\u7684\u6cdb\u578b\u59d4\u6258\u7c7b\u578b<br>.NET\u7ed9\u6211\u4eec\u9884\u5b9a\u4e49\u4e86\u5f88\u591a\u6cdb\u578b\u59d4\u6258\uff0c\u65e5\u5e38\u7f16\u7801\u5de5\u4f5c\u4e2d\u4f7f\u7528\u8fd9\u4e9b\u7c7b\u578b\u7684\u6cdb\u578b\u59d4\u6258\u57fa\u672c\u5c31\u5df2\u8db3\u591f\uff0c\u4e0b\u9762\u6211\u4eec\u53ea\u4ecb\u7ecd\u4e09\u4e2a\u5e38\u7528\u7684\u9884\u5b9a\u4e49\u7684\u6cdb\u578b\u59d4\u6258\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e00\u4e2a\uff1aPredicate<br>\u4f7f\u7528\u573a\u666f\uff1a\u5f53\u6211\u4eec\u9700\u8981\u5224\u65ad\u6570\u636e\u662f\u5426\u6ee1\u8db3\u67d0\u4e9b\u6761\u4ef6\u65f6\uff0c\u5c31\u91c7\u7528Predicate\u59d4\u6258\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f7f\u7528\u8fd9\u4e2a\u6cdb\u578b\u59d4\u6258\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u8c03\u7528Student\u7c7b\u4e2d\u8fd4\u56de\u503c\u7c7b\u578b\u4e3abool\u7684\u65b9\u6cd5\u4e86<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">class Program<br>{<br>private static ReportResult _isOlderThanHim;<br>private static Predicate _isOlder;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>static void Main(string&#91;] args)\n{\n    _isOlderThanHim = new Student().IsAdult;\n    var ret = _isOlderThanHim.Invoke(14);\n    Console.WriteLine(ret);\n\n    _isOlder = new Student().IsAdult;\n    var retWithPredicate = _isOlder.Invoke(18);\n    Console.WriteLine(retWithPredicate);\n\n    Console.ReadLine();\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<br>\/*<br>\u8fd0\u884c\u7ed3\u679c\uff1a<br>False<br>True<br>*\/<br>\u7b2c\u4e8c\u4e2a\uff1aFunc<br>\u4f7f\u7528\u573a\u666f\uff1a\u5f53\u6211\u4eec\u5bf9\u6570\u636e\u8fdb\u884c\u64cd\u4f5c\u540e\u3001\u8fd8\u5e0c\u671b\u5c06\u5904\u7406\u7ed3\u679c\u8fd4\u56de\u65f6\uff0c\u5c31\u91c7\u7528Func\u59d4\u6258\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7531\u4e8eFunc\u62e5\u6709\u4e24\u4e2a\u7c7b\u578b\u53c2\u6570\uff0c\u5b83\u63a5\u6536\u7684\u65b9\u6cd5\u8981\u6bd4Predicate\u66f4\u7075\u6d3b\uff1b\u6240\u4ee5\u4f7f\u7528Func\u80fd\u591f\u8c03\u7528Student\u4e2d\u7684\u4e24\u4e2a\u65b9\u6cd5<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">class Program<br>{<br>private static ReportResult _isOlderThanHim;<br>private static ReportResult _caculatorAge;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>private static Predicate&lt;int&gt; _isOlder;\nprivate static Func&lt;string, int&gt; _caculatorAgeFunc;\n\nstatic void Main(string&#91;] args)\n{\n    _isOlderThanHim = new Student().IsAdult;\n    var ret = _isOlderThanHim.Invoke(14);\n    Console.WriteLine(ret);\n\n    _isOlder = new Student().IsAdult;\n    var retWithPredicate = _isOlder.Invoke(18);\n    Console.WriteLine(retWithPredicate);\n\n    _caculatorAge = new Student().AfterYears;\n    var age = _caculatorAge.Invoke(\"5\");\n    Console.WriteLine(age);\n\n    _caculatorAgeFunc = new Student().AfterYears;\n    var ageWithFunc = _caculatorAgeFunc.Invoke(\"7\");\n    Console.WriteLine(ageWithFunc);\n\n    Console.ReadLine();\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<br>\/*<br>\u8f93\u51fa\uff1a<br>20<br>22<br>*\/<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e09\u4e2a\uff1aAction<br>\u4f7f\u7528\u573a\u666f\uff1a\u5f53\u6211\u4eec\u4ec5\u4ec5\u9700\u8981\u7528\u6570\u636e\u6267\u884c\u4e00\u4e9b\u64cd\u4f5c\uff0c\u5e76\u4e0d\u5e0c\u671b\u5f97\u5230\u8fd4\u56de\u503c\u65f6\uff0c\u4f7f\u7528Action\u59d4\u6258<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u4eec\u7ed9Studnet\u7c7b\u4e2d\u6dfb\u52a0\u4e00\u4e2a\u62e5\u6709\u4e00\u4e2a\u5f62\u53c2\uff0c\u8fd4\u56de\u503c\u4e3avoid\u7684\u65b9\u6cd5<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">class Student<br>{<br>private int StudentAge { get; set; } = 15;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/\/ &lt;summary&gt;\n\/\/\/ \u6253\u5370\u51fa\u5b66\u751fyear\u5e74\u540e\u7684\u5e74\u9f84\n\/\/\/ &lt;\/summary&gt;\n\/\/\/ &lt;param name=\"year\"&gt;&lt;\/param&gt;\nprivate void ShowAfterYear(string year)\n{\n    try\n    {\n        Console.WriteLine(StudentAge + Convert.ToInt32(year));\n    }\n    catch (Exception ex)\n    {\n        Console.WriteLine(ex);\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u9762\u6f14\u793a\u5982\u4f55\u4f7f\u7528Action\u59d4\u6258<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">class Program<br>{<br>private static Action _printAgeAciton;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>static void Main(string&#91;] args)\n{\n    _printAgeAciton = new Student().ShowAfterYear;\n    _printAgeAciton.Invoke(\"12\");\n    Console.ReadLine();\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<br>\/*<br>\u8fd0\u884c\u7ed3\u679c\uff1a<br>27<br>*\/<br>C#\u7684LINQ\u7279\u6027\u4e2d\uff0c\u5f88\u591a\u5730\u65b9\u90fd\u4f7f\u7528\u4e86\u6cdb\u578b\u59d4\u6258<br>\u4e0b\u9762\u5c55\u793a\u4e00\u4e0bLinq\u4e2d\u7528\u5230\u7684\u6cdb\u578b\u59d4\u6258\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">namespace GenericDemo<br>{<br>class Program<br>{<br>static void Main(string[] args)<br>{<br>List list = new List();<br>list.Add(new Student() {StudentName = &#8220;\u5510\u4e09&#8221;, StudentAge = 17, ClassGroup = &#8220;\u53f2\u83b1\u514b\u5b66\u9662&#8221;});<br>list.Add(new Student() {StudentName = &#8220;\u98ce\u7b11\u5929&#8221;, StudentAge = 18, ClassGroup = &#8220;\u795e\u98ce\u5b66\u9662&#8221;});<br>list.Add(new Student() {StudentName = &#8220;\u90aa\u6708&#8221;, StudentAge = 22, ClassGroup = &#8220;\u6b66\u9b42\u6bbf&#8221;});<br>list.Add(new Student() {StudentName = &#8220;\u80e1\u70c8\u5a1c&#8221;, StudentAge = 20, ClassGroup = &#8220;\u6b66\u9b42\u6bbf&#8221;});<br>list.Add(new Student() {StudentName = &#8220;\u6731\u7af9\u9752&#8221;, StudentAge = 19, ClassGroup = &#8220;\u53f2\u83b1\u514b\u5b66\u9662&#8221;});<br>list.Add(new Student() {StudentName = &#8220;\u7131&#8221;, StudentAge = 19, ClassGroup = &#8220;\u6b66\u9b42\u6bbf&#8221;});<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>        Console.WriteLine(\"\u904d\u5386\u6240\u6709\u4eba\u5458\");\n        list.ForEach(new Action&lt;Student&gt;(PrintStudentInfo));\n        Console.WriteLine(\"=================\");\n\n        Console.WriteLine(\"\u6309\u7167\u73ed\u7ea7\u5206\u7ec4\");\n        var grouList = list.GroupBy(new Func&lt;Student, string&gt;(GetGroup));\n        foreach (IGrouping&lt;string, Student&gt; grouping in grouList)\n        {\n            foreach (Student student in grouping)\n            {\n                Console.WriteLine(student);\n            }\n        }\n\n        Console.Write(\"\u961f\u4f0d\u4e2d\u6709\u672a\u6210\u5e74\u4e48?\");\n        var isHasNotAdult = list.Any(new Func&lt;Student, bool&gt;(IsNoAdult));\n        Console.WriteLine(isHasNotAdult);\n        Console.WriteLine(\"=================\");\n\n        Console.WriteLine(\"\u627e\u51fa\u672a\u6210\u5e74\u7684\u4eba\u5458\");\n        var isNoAdult = list.Where(new Func&lt;Student, bool&gt;(IsNoAdult));\n        foreach (Student student in isNoAdult)\n        {\n            Console.WriteLine(student);\n        }\n\n        Console.ReadLine();\n    }\n\n    private static void PrintStudentInfo(Student stu)\n    {\n        Console.WriteLine(stu);\n    }\n\n    private static bool IsNoAdult(Student stu)\n    {\n        return stu.StudentAge &lt; 18;\n    }\n\n    private static string GetGroup(Student stu)\n    {\n        return stu.ClassGroup;\n    }\n}\n\nclass Student\n{\n    public string StudentName { get; set; }\n    public int StudentAge { get; set; }\n    public string ClassGroup { get; set; }\n\n    public override string ToString()\n    {\n        return $\"{this.ClassGroup}:{this.StudentName},{this.StudentAge}\";\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<br>\/*<br>\u8fd0\u884c\u7ed3\u679c\uff1a<br>\u904d\u5386\u6240\u6709\u4eba\u5458<br>\u53f2\u83b1\u514b\u5b66\u9662:\u5510\u4e09,17<br>\u795e\u98ce\u5b66\u9662:\u98ce\u7b11\u5929,18<br>\u6b66\u9b42\u6bbf:\u90aa\u6708,22<br>\u6b66\u9b42\u6bbf:\u80e1\u70c8\u5a1c,20<br>\u53f2\u83b1\u514b\u5b66\u9662:\u6731\u7af9\u9752,19<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u6b66\u9b42\u6bbf:\u7131,19<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u6309\u7167\u73ed\u7ea7\u5206\u7ec4<br>\u53f2\u83b1\u514b\u5b66\u9662:\u5510\u4e09,17<br>\u53f2\u83b1\u514b\u5b66\u9662:\u6731\u7af9\u9752,19<br>\u795e\u98ce\u5b66\u9662:\u98ce\u7b11\u5929,18<br>\u6b66\u9b42\u6bbf:\u90aa\u6708,22<br>\u6b66\u9b42\u6bbf:\u80e1\u70c8\u5a1c,20<br>\u6b66\u9b42\u6bbf:\u7131,19<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u961f\u4f0d\u4e2d\u6709\u672a\u6210\u5e74\u4e48?True<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u627e\u51fa\u672a\u6210\u5e74\u7684\u4eba\u5458<br>\u53f2\u83b1\u514b\u5b66\u9662:\u5510\u4e09,17<br>*\/<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u9762\u7684\u6bcf\u4e2aLinq\u65b9\u6cd5\u90fd\u63a5\u6536\u4e00\u4e2a\u6cdb\u578b\u59d4\u6258\u4f5c\u4e3a\u5f62\u53c2\uff1b\u901a\u8fc7\u4e0a\u9762\u7684\u4ee3\u7801\u6211\u4eec\u53ef\u4ee5\u660e\u663e\u611f\u53d7\u5230\u4f7f\u7528\u6cdb\u578b\u59d4\u6258\u80fd\u591f\u7ed9\u6211\u4eec\u5e26\u6765\u5f88\u5927\u7684\u65b9\u4fbf\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee5\u4e0a\u4fbf\u662f\u5bf9\u6cdb\u578b\u59d4\u6258\u7684\u603b\u7ed3\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u200bC#\u89c4\u8303\u6574\u7406\u00b7\u6cdb\u578b\u59d4\u6258\u4e8b\u4ef6<br>\u57fa\u4e8e\u6cdb\u578b\uff0c\u6211\u4eec\u5f97\u4ee5\u5c06\u7c7b\u578b\u53c2\u6570\u5316\uff0c\u4ee5\u4fbf\u66f4\u5927\u8303\u56f4\u5730\u8fdb\u884c\u4ee3\u7801\u590d\u7528\u3002\u540c\u65f6\uff0c\u5b83\u51cf\u5c11\u4e86\u6cdb\u578b\u7c7b\u53ca\u6cdb\u578b\u65b9\u6cd5\u4e2d\u7684\u8f6c\u578b\uff0c\u786e\u4fdd\u4e86\u7c7b\u578b\u5b89\u5168\u3002\u59d4\u6258\u672c\u8eab\u662f\u4e00\u79cd\u5f15\u7528\u7c7b\u578b\uff0c\u5b83\u4fdd\u5b58\u7684\u4e5f\u662f\u6258\u7ba1\u5806\u4e2d\u5bf9\u8c61\u7684\u5f15\u7528\uff0c\u53ea\u4e0d\u8fc7\u8fd9\u4e2a\u5f15\u7528\u6bd4\u8f83\u7279\u6b8a\uff0c\u5b83\u662f\u5bf9\u65b9\u6cd5\u7684\u5f15\u7528\u3002\u4e8b\u4ef6\u672c\u8eab\u4e5f\u662f\u59d4\u6258\uff0c\u5b83\u662f\u59d4\u6258\u7ec4\uff0cC#\u4e2d\u63d0\u4f9b\u4e86\u5173\u952e\u5b57event\u6765\u5bf9\u4e8b\u4ef6\u8fdb\u884c\u7279\u522b\u533a\u5206\u3002<br>\u2003\u2003\u4e00\u65e6\u6211\u4eec\u5f00\u59cb\u7f16\u5199\u7a0d\u5fae\u590d\u6742\u7684C#\u4ee3\u7801\uff0c\u5c31\u80af\u5b9a\u79bb\u4e0d\u5f00\u6cdb\u578b\u3001\u59d4\u6258\u548c\u4e8b\u4ef6\u3002<br><img decoding=\"async\" src=\"https:\/\/img2018.cnblogs.com\/blog\/710776\/201906\/710776-20190613112138058-2026075746.png\" alt=\"\"><br>1.\u603b\u662f\u4f18\u5148\u8003\u8651\u6cdb\u578b#<br>\u6cdb\u578b\u7684\u4f18\u70b9\u662f\u591a\u65b9\u9762\u7684\uff0c\u65e0\u8bba\u662f\u6cdb\u578b\u7c7b\u8fd8\u662f\u6cdb\u578b\u65b9\u6cd5\u90fd\u540c\u65f6\u5177\u5907\u53ef\u91cd\u7528\u6027\u3001\u7c7b\u578b\u5b89\u5168\u548c\u9ad8\u6548\u7387\u7b49\u7279\u6027\uff0c\u8fd9\u90fd\u662f\u975e\u6cdb\u578b\u7c7b\u548c\u975e\u6cdb\u578b\u65b9\u6cd5\u65e0\u6cd5\u5177\u5907\u7684<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2.\u907f\u514d\u5728\u6cdb\u578b\u7c7b\u578b\u4e2d\u58f0\u660e\u9759\u6001\u6210\u5458#<br>\u5b9e\u9645\u4e0a\uff0c\u968f\u7740\u4f60\u4e3aT\u6307\u5b9a\u4e0d\u540c\u7684\u6570\u636e\u7c7b\u578b\uff0cMyList\uff1cT\uff1e\u76f8\u5e94\u5730\u4e5f\u53d8\u6210\u4e86\u4e0d\u540c\u7684\u6570\u636e\u7c7b\u578b\uff0c\u5728\u5b83\u4eec\u4e4b\u95f4\u662f\u4e0d\u5171\u4eab\u9759\u6001\u6210\u5458\u7684\u3002<br>\u4f46\u662f\u82e5T\u6240\u6307\u5b9a\u7684\u6570\u636e\u7c7b\u578b\u662f\u4e00\u81f4\u7684\uff0c\u90a3\u4e48\u4e24\u4e2a\u6cdb\u578b\u5bf9\u8c61\u95f4\u8fd8\u662f\u53ef\u4ee5\u5171\u4eab\u9759\u6001\u6210\u5458\u7684\uff0c\u5982\u5c40\u90e8\u7684List\u548cList\u7684\u53d8\u91cf\u3002\u4f46\u662f\uff0c\u4e3a\u4e86\u89c4\u907f\u56e0\u6b64\u800c\u5f15\u8d77\u7684\u6df7\u6dc6\uff0c\u4ecd\u65e7\u5efa\u8bae\u5728\u5b9e\u9645\u7684\u7f16\u7801\u5de5\u4f5c\u4e2d\uff0c\u5c3d\u91cf\u907f\u514d\u58f0\u660e\u6cdb\u578b\u7c7b\u578b\u7684\u9759\u6001\u6210\u5458\u3002<br>\u975e\u6cdb\u578b\u7c7b\u578b\u4e2d\u7684\u6cdb\u578b\u65b9\u6cd5\u5e76\u4e0d\u4f1a\u5728\u8fd0\u884c\u65f6\u7684\u672c\u5730\u4ee3\u7801\u4e2d\u751f\u6210\u4e0d\u540c\u7684\u7c7b\u578b\u3002<br>\u4f8b\u5982:<br>Copy<br>static void Main(string[]args) { Console.WriteLine(MyList.Func()); Console.WriteLine(MyList.Func()); Console.WriteLine(MyList.Func()); } class MyList { static int count; public static int Func() { return count++; }} \u8f93\u51fa 0 ;1;2<br>3.\u4e3a\u6cdb\u578b\u53c2\u6570\u8bbe\u5b9a\u7ea6\u675f#<br>\u5728\u7f16\u7801\u8fc7\u7a0b\u4e2d\uff0c\u5e94\u8be5\u59cb\u7ec8\u8003\u8651\u4e3a\u6cdb\u578b\u53c2\u6570\u8bbe\u5b9a\u7ea6\u675f\u3002\u7ea6\u675f\u4f7f\u6cdb\u578b\u53c2\u6570\u6210\u4e3a\u4e00\u4e2a\u5b9e\u5b9e\u5728\u5728\u7684\u201c\u5bf9\u8c61\u201d\uff0c\u8ba9\u5b83\u5177\u6709\u4e86\u6211\u4eec\u60f3\u8981\u7684\u884c\u4e3a\u548c\u5c5e\u6027\uff0c\u800c\u4e0d\u4ec5\u4ec5\u662f\u4e00\u4e2aobject\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6307\u5b9a\u7ea6\u675f\u793a\u4f8b\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6307\u5b9a\u53c2\u6570\u662f\u503c\u7c7b\u578b\u3002\uff08\u9664Nullable\u5916\uff09 where T:struct<br>\u6307\u5b9a\u53c2\u6570\u662f\u5f15\u7528\u7c7b\u578b \u3002 where T:class<br>\u6307\u5b9a\u53c2\u6570\u5177\u6709\u65e0\u53c2\u6570\u7684\u516c\u5171\u6784\u9020\u65b9\u6cd5\u3002 where T:new()<br>\u6ce8\u610f\uff0cCLR\u76ee\u524d\u53ea\u652f\u6301\u65e0\u53c2\u6784\u9020\u65b9\u6cd5\u7ea6\u675f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6307\u5b9a\u53c2\u6570\u5fc5\u987b\u662f\u6307\u5b9a\u7684\u57fa\u7c7b\uff0c\u6216\u8005\u6d3e\u751f\u81ea\u6307\u5b9a\u7684\u57fa\u7c7b\u3002<br>\u6307\u5b9a\u53c2\u6570\u5fc5\u987b\u662f\u6307\u5b9a\u7684\u63a5\u53e3\uff0c\u6216\u8005\u5b9e\u73b0\u6307\u5b9a\u7684\u63a5\u53e3\u3002<br>\u6307\u5b9aT\u63d0\u4f9b\u7684\u7c7b\u578b\u53c2\u6570\u5fc5\u987b\u662f\u4e3aU\u63d0\u4f9b\u7684\u53c2\u6570\uff0c\u6216\u8005\u6d3e\u751f\u81ea\u4e3aU\u63d0\u4f9b\u7684\u53c2\u6570\u3002 where T:U<br>\u53ef\u4ee5\u5bf9\u540c\u4e00\u7c7b\u578b\u7684\u53c2\u6570\u5e94\u7528\u591a\u4e2a\u7ea6\u675f\uff0c\u5e76\u4e14\u7ea6\u675f\u81ea\u8eab\u53ef\u4ee5\u662f\u6cdb\u578b\u7c7b\u578b\u3002<br>4.\u4f7f\u7528default\u4e3a\u6cdb\u578b\u7c7b\u578b\u53d8\u91cf\u6307\u5b9a\u521d\u59cb\u503c#<br>\u6709\u4e9b\u7b97\u6cd5\uff0c\u6bd4\u5982\u6cdb\u578b\u96c6\u5408List\uff1cT\uff1e\u7684Find\u7b97\u6cd5\uff0c\u6240\u67e5\u627e\u7684\u5bf9\u8c61\u6709\u53ef\u80fd\u4f1a\u662f\u503c\u7c7b\u578b\uff0c\u4e5f\u6709\u53ef\u80fd\u662f\u5f15\u7528\u7c7b\u578b\u3002\u5728\u8fd9\u79cd\u7b97\u6cd5\u5185\u90e8\uff0c\u6211\u4eec\u5e38\u5e38\u4f1a\u4e3a\u8fd9\u4e9b\u503c\u7c7b\u578b\u53d8\u91cf\u6216\u5f15\u7528\u7c7b\u578b\u53d8\u91cf\u6307\u5b9a\u9ed8\u8ba4\u503c\u3002\u4e8e\u662f\uff0c\u95ee\u9898\u6765\u4e86\uff1a\u503c\u7c7b\u578b\u53d8\u91cf\u7684\u9ed8\u8ba4\u521d\u59cb\u503c\u662f0\u503c\uff0c\u800c\u5f15\u7528\u7c7b\u578b\u53d8\u91cf\u7684\u9ed8\u8ba4\u521d\u59cb\u503c\u662fnull\u503c\uff0c\u663e\u7136\uff0c\u8fd9\u4f1a\u5bfc\u81f4\u4e0b\u9762\u7684\u4ee3\u7801\u7f16\u8bd1\u51fa\u9519\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>public T Func() { T t=null; T t=0; return t; }<br>\u4ee3\u7801&#8221;T t=null\uff1b&#8221;\u5728Visual Studio\u7f16\u8bd1\u5668\u4e2d\u4f1a\u8b66\u793a\uff1a\u9519\u8bef1\u4e0d\u80fd\u5c06Null\u8f6c\u6362\u4e3a\u7c7b\u578b\u5f62\u53c2\u201cT\u201d\uff0c\u56e0\u4e3a\u5b83\u53ef\u80fd\u662f\u4e0d\u53ef\u4ee5\u4e3anull\u503c\u7684\u7c7b\u578b\u3002\u8bf7\u8003\u8651\u6539\u7528\u201cdefault(T)\u201d.<br>\u4ee3\u7801&#8221;T t=0\uff1b&#8221;\u4f1a\u8b66\u793a\uff1a\u9519\u8bef1\u65e0\u6cd5\u5c06\u7c7b\u578b\u201cint\u201d\u9690\u5f0f\u8f6c\u6362\u4e3a\u201cT\u201d\u3002<br>\u6539\u8fdb<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>public T Func() { T t=default(T); return t; }<br>5.\u4f7f\u7528FCL\u4e2d\u7684\u59d4\u6258\u58f0\u660e#<br>\u8981\u6ce8\u610fFCL\u4e2d\u5b58\u5728\u4e09\u7c7b\u8fd9\u6837\u7684\u59d4\u6258\u58f0\u660e\uff0c\u5b83\u4eec\u5206\u522b\u662f\uff1aAction\u3001Func\u3001Predicate\u3002\u5c24\u5176\u662f\u5728\u5b83\u4eec\u7684\u6cdb\u578b\u7248\u672c\u51fa\u6765\u4ee5\u540e\uff0c\u5df2\u7ecf\u80fd\u591f\u6ee1\u8db3\u6211\u4eec\u5728\u5b9e\u9645\u7f16\u7801\u8fc7\u7a0b\u4e2d\u7684\u5927\u90e8\u5206\u9700\u8981\u3002<br>\u6211\u4eec\u5e94\u8be5\u4e60\u60ef\u5728\u4ee3\u7801\u4e2d\u4f7f\u7528\u8fd9\u7c7b\u59d4\u6258\u6765\u4ee3\u66ff\u81ea\u5df1\u7684\u59d4\u6258\u58f0\u660e\u3002<br>\u9664\u4e86Action\u3001Func\u548cPredicate\u5916\uff0cFCL\u4e2d\u8fd8\u6709\u7528\u4e8e\u8868\u793a\u7279\u6b8a\u542b\u4e49\u7684\u59d4\u6258\u58f0\u660e\u3002<br>Copy<br>\/\/\u5982\u7528\u4e8e\u8868\u793a\u6ce8\u518c\u4e8b\u4ef6\u65b9\u6cd5\u7684\u59d4\u6258\u58f0\u660e\uff1a public delegate void EventHandler(object sender,EventArgs e); public delegate void EventHandler(object sender,TEventArgs e); \/\/\u8868\u793a\u7ebf\u7a0b\u65b9\u6cd5\u7684\u59d4\u6258\u58f0\u660e\uff1a public delegate void ThreadStart(); public delegate void ParameterizedThreadStart(object obj); \/\/\u8868\u793a\u5f02\u6b65\u56de\u8c03\u7684\u59d4\u6258\u58f0\u660e\uff1a public delegate void AsyncCallback(IAsyncResult ar);<br>\u5728FCL\u4e2d\u6bcf\u4e00\u7c7b\u59d4\u6258\u58f0\u660e\u90fd\u4ee3\u8868\u4e00\u7c7b\u7279\u6b8a\u7684\u7528\u9014\uff0c\u867d\u7136\u53ef\u4ee5\u4f7f\u7528\u81ea\u5df1\u7684\u59d4\u6258\u58f0\u660e\u6765\u4ee3\u66ff\uff0c\u4f46\u662f\u8fd9\u6837\u505a\u4e0d\u4ec5\u6ca1\u6709\u5fc5\u8981\uff0c\u800c\u4e14\u4f1a\u8ba9\u4ee3\u7801\u5931\u53bb\u7b80\u6d01\u6027\u548c\u6807\u51c6\u6027\u3002\u5728\u6211\u4eec\u5b9e\u73b0\u81ea\u5df1\u7684\u59d4\u6258\u58f0\u660e\u524d\uff0c\u5e94\u8be5\u9996\u5148\u67e5\u770bMSDN\uff0c\u786e\u4fe1\u6709\u5fc5\u8981\u4e4b\u540e\u624d\u8fd9\u6837\u505a\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">6.\u4f7f\u7528Lambda\u8868\u8fbe\u5f0f\u4ee3\u66ff\u65b9\u6cd5\u548c\u533f\u540d\u65b9\u6cd5#<br>\u5728\u5b9e\u9645\u7684\u7f16\u7801\u5de5\u4f5c\u4e2d\u719f\u7ec3\u8fd0\u7528\u5b83\uff0c\u907f\u514d\u5199\u51fa\u70e6\u7410\u4e14\u4e0d\u7f8e\u89c2\u7684\u4ee3\u7801\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">7.\u5c0f\u5fc3\u95ed\u5305\u4e2d\u7684\u9677\u9631#<br>\u5982\u679c\u533f\u540d\u65b9\u6cd5\uff08Lambda\u8868\u8fbe\u5f0f\uff09\u5f15\u7528\u4e86\u67d0\u4e2a\u5c40\u90e8\u53d8\u91cf\uff0c\u7f16\u8bd1\u5668\u5c31\u4f1a\u81ea\u52a8\u5c06\u8be5\u5f15\u7528\u63d0\u5347\u5230\u8be5\u95ed\u5305\u5bf9\u8c61\u4e2d\uff0c\u5373\u5c06for\u5faa\u73af\u4e2d\u7684\u53d8\u91cfi \u4fee\u6539\u6210\u4e86\u5f15\u7528\u95ed\u5305\u5bf9\u8c61\uff08\u7f16\u8bd1\u5668\u81ea\u52a8\u521b\u5efa\uff09\u7684\u516c\u5171\u53d8\u91cfi\u3002<br>\u793a\u4f8b\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>static void Main(string[]args) { Listlists=new List(); for(int i=0;i&lt;5;i++) { Action t=()=&gt; { Console.WriteLine(i.ToString()); }; lists.Add(t); } foreach(Action t in lists) { t(); } }<br>\u4ee5\u4e0a\u7ed3\u679c\u5168\u90e8\u8f93\u51fa5\uff1b<br>\u53e6\u5916\u4e00\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff1b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>static void Main\uff08string[]args\uff09 { List\uff1cAction\uff1elists=new List\uff1cAction\uff1e\uff08\uff09\uff1b TempClass tempClass=new TempClass\uff08\uff09\uff1b for\uff08tempClass.i=0\uff1btempClass.i\uff1c5\uff1btempClass.i++\uff09 { Action t=tempClass.TempFuc\uff1b lists.Add\uff08t\uff09\uff1b } foreach\uff08Action t in lists\uff09 { t\uff08\uff09\uff1b } } class TempClass { public int i\uff1b public void TempFuc\uff08\uff09 { Console.WriteLine\uff08i.ToString\uff08\uff09\uff09\uff1b } }<br>\u8fd9\u6bb5\u4ee3\u7801\u6240\u6f14\u793a\u7684\u5c31\u662f\u95ed\u5305\u5bf9\u8c61\u3002\u6240\u8c13\u95ed\u5305\u5bf9\u8c61\uff0c\u6307\u7684\u662f\u4e0a\u9762\u8fd9\u79cd\u60c5\u5f62\u4e2d\u7684TempClass\u5bf9\u8c61\uff08\u5728\u7b2c\u4e00\u6bb5\u4ee3\u7801\u4e2d\uff0c\u4e5f\u5c31\u662f\u7f16\u8bd1\u5668\u4e3a\u6211\u4eec\u751f\u6210\u7684\u201c\uff1c\uff1ec__DisplayClass2\u201d\u5bf9\u8c61\uff09\u3002\u5982\u679c\u533f\u540d\u65b9\u6cd5\uff08Lambda\u8868\u8fbe\u5f0f\uff09\u5f15\u7528\u4e86\u67d0\u4e2a\u5c40\u90e8\u53d8\u91cf\uff0c\u7f16\u8bd1\u5668\u5c31\u4f1a\u81ea\u52a8\u5c06\u8be5\u5f15\u7528\u63d0\u5347\u5230\u8be5\u95ed\u5305\u5bf9\u8c61\u4e2d\uff0c\u5373\u5c06for\u5faa\u73af\u4e2d\u7684\u53d8\u91cfi\u4fee\u6539\u6210\u4e86\u5f15\u7528\u95ed\u5305\u5bf9\u8c61\u7684\u516c\u5171\u53d8\u91cfi\u3002\u8fd9\u6837\u4e00\u6765\uff0c\u5373\u4f7f\u4ee3\u7801\u6267\u884c\u540e\u79bb\u5f00\u4e86\u539f\u5c40\u90e8\u53d8\u91cfi\u7684\u4f5c\u7528\u57df\uff08\u5982for\u5faa\u73af\uff09\uff0c\u5305\u542b\u8be5\u95ed\u5305\u5bf9\u8c61\u7684\u4f5c\u7528\u57df\u4e5f\u8fd8\u5b58\u5728\u3002\u7406\u89e3\u4e86\u8fd9\u4e00\u70b9\uff0c\u5c31\u80fd\u7406\u89e3\u4ee3\u7801\u7684\u8f93\u51fa\u4e86\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">8.\u4e86\u89e3\u59d4\u6258\u7684\u672c\u8d28#<br>\u7406\u89e3C#\u4e2d\u7684\u59d4\u6258\u9700\u8981\u628a\u63e1\u4e24\u4e2a\u8981\u70b9\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u59d4\u6258\u662f\u65b9\u6cd5\u6307\u9488\u3002<br>\u59d4\u6258\u662f\u4e00\u4e2a\u7c7b\uff0c\u5f53\u5bf9\u5176\u8fdb\u884c\u5b9e\u4f8b\u5316\u7684\u65f6\u5019\uff0c\u8981\u5c06\u5f15\u7528\u65b9\u6cd5\u4f5c\u4e3a\u5b83\u7684\u6784\u9020\u65b9\u6cd5\u7684\u53c2\u6570\u3002<br>9.\u4f7f\u7528event\u5173\u952e\u5b57\u4e3a\u59d4\u6258\u65bd\u52a0\u4fdd\u62a4#<br>\u9996\u5148\u6ca1\u6709event\u52a0\u6301\u7684\u59d4\u6258\uff0c\u6211\u4eec\u53ef\u4ee5\u5bf9\u5b83\u968f\u65f6\u8fdb\u884c\u4fee\u6539\u8d4b\u503c\uff0c\u4ee5\u81f3\u4e8e\u4e00\u4e2a\u65b9\u6cd5\u6539\u52a8\u4e86\u53e6\u4e00\u4e2a\u65b9\u6cd5\u7684\u59d4\u6258\u94fe\u5f15\u7528\uff0c\u6bd4\u5982\u8d4b\u503c\u4e3anull\uff0c\u53e6\u5916\u4e00\u4e2a\u65b9\u6cd5\u4e2d\u8c03\u7528\u7684\u65f6\u5019\u5c06\u629b\u51fa\u5f02\u5e38\u3002<br>\u5982\u679c\u6709event\u52a0\u6301\u7684\u65f6\u5019\uff0c\u6211\u4eec\u4fee\u6539\u7684\u65f6\u5019\uff0c\u6bd4\u5982\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>fl.FileUploaded=null; fl.FileUploaded=Progress; fl.FileUploaded(10);<br>\u4ee5\u4e0a\u4ee3\u7801\u7f16\u8bd1\u4f1a\u51fa\u73b0\u9519\u8bef\u8b66\u544a\uff1a<br>\u4e8b\u4ef6 \u201cConsoleApplication1.FileUploader.FileUploaded \u201d<br>\u53ea\u80fd\u51fa\u73b0\u5728+=\u6216-=\u7684\u5de6\u8fb9\uff08\u4ece\u7c7b\u578b\u201cConsoleApplication1.FileUploader\u201d\u4e2d\u4f7f\u7528\u65f6\u9664\u5916\uff09<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">10.\u5b9e\u73b0\u6807\u51c6\u7684\u4e8b\u4ef6\u6a21\u578b#<br>\u6709\u4e86\u4e0a\u9762\u7684event\u52a0\u6301\uff0c\u4f46\u662f\u8fd8\u4e0d\u80fd\u591f\u89c4\u8303\u3002<br>EventHandler\u7684\u539f\u578b\u58f0\u660e\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>public delegate void EventHandler(object sender,EventArgs e);<br>\u5fae\u8f6f\u4e3a\u4e8b\u4ef6\u6a21\u578b\u8bbe\u5b9a\u7684\u51e0\u4e2a\u89c4\u8303\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u59d4\u6258\u7c7b\u578b\u7684\u540d\u79f0\u4ee5EventHandler\u7ed3\u675f\uff1b<br>\u59d4\u6258\u539f\u578b\u8fd4\u56de\u503c\u4e3avoid\uff1b<br>\u59d4\u6258\u539f\u578b\u5177\u6709\u4e24\u4e2a\u53c2\u6570\uff1asender\u8868\u793a\u4e8b\u4ef6\u89e6\u53d1\u8005\uff0ce\u8868\u793a\u4e8b\u4ef6\u53c2\u6570\uff1b<br>\u4e8b\u4ef6\u53c2\u6570\u7684\u540d\u79f0\u4ee5EventArgs\u7ed3\u675f\u3002<br>11.\u4f7f\u7528\u6cdb\u578b\u53c2\u6570\u517c\u5bb9\u6cdb\u578b\u63a5\u53e3\u7684\u4e0d\u53ef\u53d8\u6027#<br>\u8ba9\u8fd4\u56de\u503c\u7c7b\u578b\u8fd4\u56de\u6bd4\u58f0\u660e\u7684\u7c7b\u578b\u6d3e\u751f\u7a0b\u5ea6\u66f4\u5927\u7684\u7c7b\u578b\uff0c\u5c31\u662f\u201c\u534f\u53d8\u201d\u3002<br>\u7f16\u8bd1\u5668\u5bf9\u4e8e\u63a5\u53e3\u548c\u59d4\u6258\u7c7b\u578b\u53c2\u6570\u7684\u68c0\u67e5\u662f\u975e\u5e38\u4e25\u683c\u7684\uff0c\u9664\u975e\u7528\u5173\u952e\u5b57out\u7279\u522b\u58f0\u660e\uff0c\u4e0d\u7136\u8fd9\u6bb5\u4ee3\u7801\u53ea\u4f1a\u7f16\u8bd1\u5931\u8d25\u3002\u6bd4\u5982\u4e0b\u4f8b<br>\u4f8b\u5982\uff1a<br>Copy<br>class Program{ static void Main(string[]args) { ISalarys=new BaseSalaryCounter(); PrintSalary(s); } static void PrintSalary(ISalarys) { s.Pay(); } } interface ISalary { void Pay(); } class BaseSalaryCounter:ISalary { public void Pay() { Console.WriteLine(&#8220;Pay base salary&#8221;); } } class Employee { public string Name{get;set;} } class Programmer:Employee{} class Manager:Employee{}<br>\u62a5\u9519\uff1a \u65e0\u6cd5\u4ece\u201cConsoleApplication4.ISalary\u201d\u8f6c\u6362\u4e3a\u201cConsoleApplication4.ISalary\u201d<br>\u8981\u8ba9PrintSalary\u5b8c\u6210\u9700\u6c42\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u6cdb\u578b\u7c7b\u578b\u53c2\u6570\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>static void PrintSalary(ISalarys) { s.Pay(); }<br>\u5b9e\u9645\u4e0a\uff0c\u53ea\u8981\u6cdb\u578b\u7c7b\u578b\u53c2\u6570\u5728\u4e00\u4e2a\u63a5\u53e3\u58f0\u660e\u4e2d\u4e0d\u88ab\u7528\u6765\u4f5c\u4e3a\u65b9\u6cd5\u7684\u8f93\u5165\u53c2\u6570\uff0c\u6211\u4eec\u90fd\u53ef\u59d1\u4e14\u628a\u5b83\u770b\u6210\u662f\u201c\u8fd4\u56de\u503c\u201d\u7c7b\u578b\u7684\u3002\u6240\u4ee5\uff0c\u6cdb\u578b\u7c7b\u578b\u53c2\u6570\u8fd9\u79cd\u6a21\u5f0f\u662f\u6ee1\u8db3\u201c\u534f\u53d8\u201d\u7684\u5b9a\u4e49\u7684\u3002\u4f46\u662f\uff0c\u53ea\u8981\u5c06T\u4f5c\u4e3a\u8f93\u5165\u53c2\u6570\uff0c\u4fbf\u4e0d\u6ee1\u8db3\u201c\u534f\u53d8\u201d\u7684\u5b9a\u4e49\u4e86\u3002\u5982\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>interface ISalary { void Pay(T t); }<br>\u7f16\u8bd1\u4f1a\u63d0\u793a\uff1a\u5dee\u5f02\u65e0\u6548:\u7c7b\u578b\u53c2\u6570\u201cT\u201d\u5fc5\u987b\u662f\u5728\u201cISalary.Pay(T)\u201d\u4e0a\u6709\u6548\u7684\u9006\u53d8\u5f0f\u3002\u201cT\u201d\u4e3a\u534f\u53d8\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">12.\u8ba9\u63a5\u53e3\u4e2d\u7684\u6cdb\u578b\u53c2\u6570\u652f\u6301\u534f\u53d8#<br>\u9664\u4e8611\u4e2d\u63d0\u5230\u7684\u4f7f\u7528\u6cdb\u578b\u53c2\u6570\u517c\u5bb9\u6cdb\u578b\u63a5\u53e3\u7684\u4e0d\u53ef\u53d8\u6027\u5916\uff0c\u8fd8\u6709\u4e00\u79cd\u529e\u6cd5\u5c31\u662f\u4e3a\u63a5\u53e3\u4e2d\u7684\u6cdb\u578b\u58f0\u660e\u52a0\u4e0aout\u5173\u952e\u5b57\u6765\u652f\u6301\u534f\u53d8\u3002<br>out\u5173\u952e\u5b57\u662fFCL 4.0\u4e2d\u65b0\u589e\u7684\u529f\u80fd\uff0c\u5b83\u53ef\u4ee5\u5728\u6cdb\u578b\u63a5\u53e3\u548c\u59d4\u6258\u4e2d\u4f7f\u7528\uff0c\u7528\u6765\u8ba9\u7c7b\u578b\u53c2\u6570\u652f\u6301\u534f\u53d8\u6027\u3002\u901a\u8fc7\u534f\u53d8\uff0c\u53ef\u4ee5\u4f7f\u7528\u6bd4\u58f0\u660e\u7684\u53c2\u6570\u6d3e\u751f\u7c7b\u578b\u66f4\u5927\u7684\u53c2\u6570\u3002\u901a\u8fc7\u4e0b\u9762\u4f8b\u5b50\u6211\u4eec\u5e94\u8be5\u80fd\u7406\u89e3\u8fd9\u79cd\u5e94\u7528\u3002<br>\u6bd4\u5982\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>static void Main(string[]args) { ISalarys=new BaseSalaryCounter(); ISalaryt=new BaseSalaryCounter(); PrintSalary(s); PrintSalary(t); } static void PrintSalary(ISalarys)\/\/\u7528\u6cd5\u6b63\u786e { s.Pay(); } } interface ISalary \/\/\u4f7f\u7528\u4e86out\u5173\u952e\u5b57 { void Pay(); }<br>FCL 4.0\u5bf9\u591a\u4e2a\u63a5\u53e3\u8fdb\u884c\u4e86\u4fee\u6539\u4ee5\u652f\u6301\u534f\u53d8\uff0c\u5982IEnumerable\uff1cout T\uff1e\u3001IEnumerator\uff1cout T\uff1e\u3001IQuerable\uff1cout T\uff1e\u7b49\u3002\u7531\u4e8eIEnumerable\uff1cout T\uff1e\u73b0\u5728\u652f\u6301\u534f\u53d8\uff0c\u6240\u4ee5\u4e0a\u6bb5\u4ee3\u7801\u5728FCL 4.0\u4e2d\u80fd\u8fd0\u884c\u5f97\u5f88\u597d\u3002<br>\u5728\u6211\u4eec\u81ea\u5df1\u7684\u4ee3\u7801\u4e2d\uff0c\u5982\u679c\u8981\u7f16\u5199\u6cdb\u578b\u63a5\u53e3\uff0c\u9664\u975e\u786e\u5b9a\u8be5\u63a5\u53e3\u4e2d\u7684\u6cdb\u578b\u53c2\u6570\u4e0d\u6d89\u53ca\u53d8\u4f53\uff0c\u5426\u5219\u90fd\u5efa\u8bae\u52a0\u4e0aout\u5173\u952e\u5b57\u3002\u534f\u53d8\u589e\u5927\u4e86\u63a5\u53e3\u7684\u4f7f\u7528\u8303\u56f4\uff0c\u800c\u4e14\u51e0\u4e4e\u4e0d\u4f1a\u5e26\u6765\u4ec0\u4e48\u526f\u4f5c\u7528\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">13.\u7406\u89e3\u59d4\u6258\u4e2d\u7684\u534f\u53d8#<br>\u59d4\u6258\u4e2d\u7684\u6cdb\u578b\u53d8\u91cf\u5929\u7136\u662f\u90e8\u5206\u652f\u6301\u534f\u53d8\u7684\u3002<br>\u6bd4\u5982\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>public delegate T GetEmployeeHanlder(string name); static void Main(){ GetEmployeeHanldergetAEmployee=GetAManager; Employee e=getAEmployee(&#8220;Mike&#8221;); }<br>\u56e0\u4e3a\u5b58\u5728\u4e0b\u9762\u8fd9\u6837\u4e00\u79cd\u60c5\u51b5\uff0c\u6240\u4ee5\u7f16\u8bd1\u901a\u4e0d\u8fc7\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>GetEmployeeHanldergetAManager=GetAManager;GetEmployeeHanldergetAEmployee=getAManager; static Manager GetAManager(string name) { Console.WriteLine(&#8220;\u6211\u662f\u7ecf\u7406:&#8221;+name); return new Manager(){Name=name}; } static Employee GetAEmployee(string name) { Console.WriteLine(&#8220;\u6211\u662f\u96c7\u5458:&#8221;+name); return new Employee(){Name=name}; }<br>\u8981\u8ba9\u4e0a\u9762\u7684\u4ee3\u7801\u7f16\u8bd1\u901a\u8fc7\uff0c\u540c\u6837\u9700\u8981\u4e3a\u59d4\u6258\u4e2d\u7684\u6cdb\u578b\u53c2\u6570\u6307\u5b9aout\u5173\u952e\u5b57\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>public delegate T GetEmployeeHanlder(string name);<br>FCL 4.0\u4e2d\u7684\u4e00\u4e9b\u59d4\u6258\u58f0\u660e\u5df2\u7ecf\u7528out\u5173\u952e\u5b57\u6765\u8ba9\u59d4\u6258\u652f\u6301\u534f\u53d8\u4e86\uff0c\u5982\u6211\u4eec\u5e38\u5e38\u4f1a\u4f7f\u7528\u5230\u7684\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>public delegate TResult Func()\u548c public delegate TOutput Converter(TInput input)<br>14.\u4e3a\u6cdb\u578b\u7c7b\u578b\u53c2\u6570\u6307\u5b9a\u9006\u53d8#<br>\u9006\u53d8\u662f\u6307\u65b9\u6cd5\u7684\u53c2\u6570\u53ef\u4ee5\u662f\u59d4\u6258\u6216\u6cdb\u578b\u63a5\u53e3\u7684\u53c2\u6570\u7c7b\u578b\u7684\u57fa\u7c7b\u3002FCL 4.0\u4e2d\u652f\u6301\u9006\u53d8\u7684\u5e38\u7528\u59d4\u6258\u6709\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>Func Predicate \/\/\u5e38\u7528\u6cdb\u578b\u63a5\u53e3\u6709\uff1a IComparer<br>\u4e3e\u4f8b\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copy<br>class Program { static void Main() { Programmer p=new Programmer{Name=&#8221;Mike&#8221;}; Manager m=new Manager{Name=&#8221;Steve&#8221;}; Test(p,m); } static void Test(IMyComparablet1,T t2) { \/\/\u7701\u7565 }} public interface IMyComparable { int Compare(T other); } public class Employee:IMyComparable { public string Name{get;set;} public int Compare(Employee other) { return Name.CompareTo(other.Name); } } public class Programmer:Employee,IMyComparable { public int Compare(Programmer other) { return Name.CompareTo(other.Name); } } public class Manager:Employee{ }<br>\u5728\u4e0a\u9762\u7684\u8fd9\u4e2a\u4f8b\u5b50\u4e2d\uff0c\u5982\u679c\u4e0d\u4e3a\u63a5\u53e3IMy-Comparable\u7684\u6cdb\u578b\u53c2\u6570T\u6307\u5b9ain\u5173\u952e\u5b57\uff0c\u5c06\u4f1a\u5bfc\u81f4Test\uff08p, m\uff09\u7f16\u8bd1\u9519\u8bef\u3002\u7531\u4e8e\u5f15\u5165\u4e86\u63a5\u53e3\u7684\u9006\u53d8\u6027\uff0c\u8fd9\u8ba9\u65b9\u6cd5Test\u652f\u6301\u4e86\u66f4\u591a\u7684\u5e94\u7528\u573a\u666f\u3002\u5728FCL4.0\u4e4b\u540e\u7248\u672c\u7684\u5b9e\u9645\u7f16\u7801\u4e2d\u5e94\u8be5\u59cb\u7ec8\u6ce8\u610f\u8fd9\u4e00\u70b9\u3002<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n<div class=\"wp-block-post-date\"><time datetime=\"2024-10-14T11:47:06+08:00\">2024\u5e7410\u670814\u65e5<\/time><\/div>\n<\/li><\/ul><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-11","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.scuf.cn\/index.php\/wp-json\/wp\/v2\/posts\/11","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.scuf.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.scuf.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.scuf.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.scuf.cn\/index.php\/wp-json\/wp\/v2\/comments?post=11"}],"version-history":[{"count":1,"href":"https:\/\/www.scuf.cn\/index.php\/wp-json\/wp\/v2\/posts\/11\/revisions"}],"predecessor-version":[{"id":13,"href":"https:\/\/www.scuf.cn\/index.php\/wp-json\/wp\/v2\/posts\/11\/revisions\/13"}],"wp:attachment":[{"href":"https:\/\/www.scuf.cn\/index.php\/wp-json\/wp\/v2\/media?parent=11"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.scuf.cn\/index.php\/wp-json\/wp\/v2\/categories?post=11"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.scuf.cn\/index.php\/wp-json\/wp\/v2\/tags?post=11"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}