<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>春暖花开</title><link>https://daobk.com/</link><description>[小道博客]你所看到,就是你所得到的!</description><item><title>windows10企业版 LTSC 安装官方便签</title><link>https://daobk.com/post/188.html</link><description>&lt;p style=&quot;text-align: left;&quot;&gt;平时很喜欢windows10的“&lt;span style=&quot;text-wrap: wrap;&quot;&gt;便签&lt;/span&gt;”应用，而平常没做完的工作需要第二天继续完成。我比较喜欢使用便签来提醒自己。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;但&amp;nbsp;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;windows10企业版 LTSC默认不带&amp;nbsp;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;便签&lt;/span&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;”应用。经过各方查询，最终安装成功。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;具体步骤：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;1、下载自带应用&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;打开 &lt;strong&gt;https://store.rg-adguard.net/&lt;/strong&gt; 网址，&lt;/p&gt;&lt;p&gt;左侧选择 &lt;strong&gt;PackageFamilyName&lt;/strong&gt; ，右侧输入 &lt;strong&gt;Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe&lt;/strong&gt;，点击搜索。&lt;/p&gt;&lt;p&gt;选择 &lt;strong&gt;Microsoft.MicrosoftStickyNotes_3.7.106.0_neutral_~_8wekyb3d8bbwe.appxbundle&lt;/strong&gt; 下载。注意要是[&lt;strong&gt;.appxbundle&lt;/strong&gt;]格式。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2024/04/202404181433511271762.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;strong&gt;2、以管理员身份打开 Powershell,&lt;/strong&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2024/04/202404181435369621211.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;先使用:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap: wrap; text-align: left;&quot;&gt;cd 安装软件目录路径&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap: wrap; text-align: left;&quot;&gt;以下是我的&lt;strong&gt;便签appxbundle&lt;/strong&gt;文件路径，请根据您的实际情况修改。&lt;/p&gt;&lt;pre class=&quot;brush:ps;toolbar:false&quot; style=&quot;text-align: left;&quot;&gt;cd&amp;nbsp;D:\Users\MG\Downloads&lt;/pre&gt;&lt;p style=&quot;text-align: left;&quot;&gt;进入安装目录。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2024/04/202404181437375175216.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;strong&gt;3、执行安装命令。&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;brush:ps;toolbar:false&quot; style=&quot;text-align: left;&quot;&gt;Add-AppPackage&amp;nbsp;Microsoft.MicrosoftStickyNotes_3.7.106.0_neutral___8wekyb3d8bbwe.AppxBundle&lt;/pre&gt;&lt;p style=&quot;text-align: left;&quot;&gt;在安装时，如出现了错误。提示以下内容：&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2024/04/202404181440387667833.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;解决方法如下：&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;查看错误信息，是哪个框架没有安装，例如上面的错误提示：Microsoft.NET.Native.Framework.2.2 没有安装。那就先安装这个框架。&lt;/p&gt;&lt;p&gt;在上面打开的&amp;nbsp;&lt;strong&gt;https://store.rg-adguard.net/&lt;/strong&gt; 网站中找到以下3个软件(注：我的系统是X64，请注意您的操作系统类型)：&lt;/p&gt;&lt;blockquote style=&quot;text-wrap: wrap;&quot;&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;Microsoft.NET.Native.Framework.2.2_2.2.29512.0_x64__8wekyb3d8bbwe.Appx&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;Microsoft.NET.Native.Runtime.2.2_2.2.28604.0_x64__8wekyb3d8bbwe.Appx&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;Microsoft.VCLibs.140.00_14.0.33519.0_x64__8wekyb3d8bbwe.Appx&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;text-wrap: wrap; text-align: left;&quot;&gt;以上3个软件，可能版本号不同，但前面是一样，并且是.Appx格式的。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2024/04/202404181503015598482.png&quot; alt=&quot;微信截图_20240418150223.png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2024/04/202404181444274812220.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;安装框架成功后，返回地3步进行安装“便签”应用。&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;安装完成后，重启电脑，即可使用“便签”应用了。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2024/04/202404181458199380687.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Thu, 18 Apr 2024 14:25:41 +0800</pubDate></item><item><title>Z-BlogPHP 显示错误 Undefined array key &amp;quot;pro&amp;quot; 临时解决办法</title><link>https://daobk.com/post/187.html</link><description>&lt;p&gt;今天将博客整站换了99一年的阿里云：&lt;a href=&quot;https://www.aliyun.com/daily-act/ecs/activity_selection?userCode=152zzh76&quot; target=&quot;_blank&quot; title=&quot;99一年2核2G云服务器&quot;&gt;2核2G云服务器&lt;/a&gt;，使用了宝塔推荐的PHP8.0版本。但某些文章打开或显示错误。&lt;/p&gt;&lt;p&gt;提示：Undefined array key &amp;quot;pro&amp;quot; 错误。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2024/04/202404161640476084788.png&quot; alt=&quot;微信截图_20240416163136.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;百度了一圈没有找到解决办法。在官方论坛里也没找到解决办法。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2024/04/202404161649312281658.jpeg&quot; alt=&quot;屏幕截图_16-4-2024_164628_bbs.zblogcn.com.jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;最后，对比了一下原服务器的宝塔PHP版本发现，PHP是7.4版本。&lt;/p&gt;&lt;p&gt;将PHP版本切换到7.4解决此问题。&lt;/p&gt;&lt;p&gt;使用的是主题：拓源纯净主题&lt;/p&gt;&lt;p&gt;如果您也遇到这个问题可以试一下这个临时解决办法。&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;PS：引发问题可能是PHP版本某些变量不一样所导致。只能等&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;拓源大佬 修复这个BUG。&lt;/span&gt;&lt;/p&gt;</description><pubDate>Tue, 16 Apr 2024 16:33:53 +0800</pubDate></item><item><title>Stable Diffusion 的 Controlnet基础知识</title><link>https://daobk.com/post/186.html</link><description>&lt;p&gt;ControlNet是一个用于深度神经网络的控制技术，它可以通过操作神经网络块的输入条件来控制神经网络的行为。在这里，“网络块”是指常用的神经层集合，例如“resnet”块、“conv-bn-relu”块、多头注意力块等。通过克隆神经网络块的参数并应用零卷积连接层来实现ControlNet的目标。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2024/04/202404161516545453248.png&quot; alt=&quot;8656179125ecb9dac23582ce637e730a.png&quot;/&gt;&lt;/p&gt;&lt;h3&gt;设计原理&lt;/h3&gt;&lt;p&gt;从文生图，到图生图，到局部重绘，到controlnet，我们从更多的维度上试图控制扩散模型的输出结果&lt;/p&gt;&lt;p&gt;&lt;strong&gt;约束分类&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、线条约束&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;canny边缘检测：精准的边缘检测&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;had边缘检测：保留轮廓细节的边缘检测&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;M-LSD边缘检测：对直线进行检测(主要针对建筑)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;伪涂鸦:粗线条大概还原&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;涂鸦:可以自己创建画板，进行涂鸦，在生成图片&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;二、姿势约束&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;openpose姿态检测：对身体的骨骼进行&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;openpose姿态+手部检测：加上了手部骨骼，师徒解决手的问题&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;三、深度约束&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;Mida深度估算&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;LeRes深度估算&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;法线贴图&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;四、物品类型约束&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;语义分割：大江户战士(B站)&lt;/p&gt;&lt;p&gt;&lt;strong&gt;五、色彩约束&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;color模式&lt;/p&gt;&lt;p&gt;&lt;strong&gt;六、风格约束&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;clip_version&lt;/p&gt;&lt;h3&gt;参数&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;反色模式&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;低显存优化&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;无提示词模式&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;预处理器&lt;/strong&gt;:把图片特征处理出来&lt;/p&gt;&lt;p&gt;&lt;strong&gt;模型&lt;/strong&gt;:让stable diffusion模型 学会理解某一类图片&lt;/p&gt;&lt;p&gt;&lt;strong&gt;权重&lt;/strong&gt;:在多大程度上，特征图片影像生成的图片(一般0.6-1.1)&lt;/p&gt;&lt;p&gt;&lt;strong&gt;引导时机&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;引导介入时机:从哪里开始引导&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;引导退出时机:从哪里退出引导&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;预处理器分辨率(Annotator resolution)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;阈值&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;low threshold&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;high threshold&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;画面缩放模式&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;一般情况下，我们要求controlnet用图和生成的图分辨率一致&lt;/p&gt;&lt;p&gt;分类&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;信封模式(裁切原图)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;缩放模式(扩展原图)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;仅调整大小(缩放)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;画布模式&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;创建空白画布&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;画布宽度&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;画布高度&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;预览&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;预览预处理结果&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;隐藏预处理预览&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;建筑推荐的预处理器&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Canny(边缘检测):&lt;/strong&gt;接近淘汰&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Depth(图片深度信息)&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;depth_leres(LeReS 深度图估算)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;depth_midas(MiDaS 深度图估算)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;depth_zoe(ZoE 深度图估算)→常用&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong style=&quot;text-wrap: wrap;&quot;&gt;→&lt;/strong&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;对应模型&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;control_v11f1p_sd15_depth&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Lineart(线稿分析)&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;Lineart_anime(动漫线稿提取)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Lineart_coarse(粗略线稿提取)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Lineart_realistic(写实线稿提取)&lt;span style=&quot;text-wrap: wrap;&quot;&gt;→&lt;/span&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;常用&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Lineart_standard(from white bg &amp;amp; black line)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;→对应模型&lt;/p&gt;&lt;p&gt;control_v11p_sd15s2_lineart_anime&lt;/p&gt;&lt;p&gt;control_v11p_sd15_lineart&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Mlsd(直线线条检测)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Seg(语义分析)&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;seg_ofade20k(语义分割 - OneFormer 算法 - ADE20k协议)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;seg_ofcoco(语义分割 - OneFormer算法 - COCO协议)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;seg_ufade20k(语义分割 - UniFormer 算法 - ADE20k协议)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;→&lt;/span&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;对应模型&lt;/span&gt;&lt;/p&gt;&lt;p&gt;control_v11p_sd15_seg&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;总结：&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;深度图是为了区别建筑的前后体量关系&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;线稿是为了控制形体轮廓的生成&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;语义分割是为了生成建筑的区域&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;弄清楚三者控制的项目，以及掌握起始与终止步数的原理，才能更好的生成我们想要的图片&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;提示词&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;在生成建筑图时&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;使用建筑模型：使用 自然语言(像小作文一样的话语) 会更好的生成建筑图&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;使用人物模型：使用 单词(只输入关键词) 会更好的生成建筑图&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;线稿图使用结论&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;对于线稿图&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;线稿不是越细致越好，避免涂抹阴影，只留轮廓线和结构线&lt;/p&gt;&lt;p&gt;&lt;strong&gt;对于Controlnet&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;Canny尽量不要在使用&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;模式选择：自由模式&amp;gt;均衡模式&amp;gt;以提示词为主&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;推荐使用：lineart&amp;gt;mlsd&amp;gt;normalbae&amp;gt;scrible&amp;gt;softedge&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Reference预处理&lt;/h3&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;reference_adain(仅参考输入图-自适应实例规范)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;reference_adain+attn(仅参考输入图-自适应实例规范+Attention链接)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;reference_only(仅参考输入图)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;概要&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;它没有模型，只需要更新Controlnet到最新版本，预处理器里就会有三个选项&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;底模非常重要，因为它会识别并根据底模数据来生成新的图，如果底模不合适，会出来过曝或者过暗的图片&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;概要&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;生成的图片质量：reference_adain+attn&amp;gt;reference_adain&amp;gt;reference_only&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;生成图片的与参考图的相似度：均衡&amp;gt;自由模式&amp;gt;提示词为主&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;均衡模式下，参数越低，越接近设计底图，参数越高，越接近参考图&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 16 Apr 2024 15:12:50 +0800</pubDate></item><item><title>Stable Diffusion 学习笔记</title><link>https://daobk.com/post/185.html</link><description>&lt;p&gt;Stable Diffusion 是一款由 Stability AI 开发的开源人工智能（AI）绘画工具，专注于基于文本输入生成高质量、高分辨率的图像。自2023年以来，它已成为AI生成内容（AIGC）领域内非常热门且具有影响力的项目之一，因其强大的图像生成能力和广泛的应用潜力而受到广泛关注。以下是关于 Stable Diffusion 的详细介绍：&lt;/p&gt;&lt;h3&gt;核心技术&lt;/h3&gt;&lt;h4&gt;潜在扩散模型（Latent Diffusion Models, LDMs）&lt;/h4&gt;&lt;p&gt;Stable Diffusion 基于潜在扩散模型（LDMs），这是一种结合了扩散模型与变分自编码器（VAEs）思想的深度学习架构。LDMs 将扩散过程从原始的像素空间转移到一个低维的、更具表征能力的隐空间，以此来简化计算、减少内存需求，并使模型更聚焦于语义信息。&lt;/p&gt;&lt;h4&gt;扩散过程&lt;/h4&gt;&lt;p&gt;扩散模型利用逆向的随机过程来逐步从纯噪声中生成清晰图像。Stable Diffusion 实现这一过程的具体方法是对高斯噪声进行迭代扩散，利用 Langevin 动力学模拟粒子在能量场中的运动，通过一系列微小的步骤逐渐构造出目标图像。模型在训练过程中学习如何从初始噪声状态逐渐还原出真实数据分布。&lt;/p&gt;&lt;h4&gt;关键特性：&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;温度参数（Temperature）&lt;/strong&gt;：在扩散过程中引入温度参数 T 来控制分布的扩散程度。随着训练的进行，T 逐渐降低，使得分布逐渐收缩，从而提高采样的质量和图像的保真度。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;迭代去噪&lt;/strong&gt;：模型执行一系列去噪步骤，在每个步骤中通过一个 U-Net 结构或其他类型的神经网络来估计并去除噪声，逐步恢复图像的细节和清晰度。这种设计有助于模型在保持生成图像多样性的同时，对条件控制（如文本描述）做出更准确的响应。&lt;/p&gt;&lt;h4&gt;文本编码&lt;/h4&gt;&lt;p&gt;Stable Diffusion 使用先进的文本编码器，如 OpenCLIP，将用户提供的自然语言文本转化为向量表示。这种向量能够捕获文本的语义信息，并与图像空间对齐，使得模型能够在生成图像时精确地遵循文本描述。&lt;/p&gt;&lt;h3&gt;特点与优势&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;高质量图像生成&lt;/strong&gt;：Stable Diffusion 能够生成细节丰富、高清、逼真的图像，其生成效果显著优于早期的粗陋玩具模型，展现出高度的艺术性和专业级视觉质量。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;文本驱动&lt;/strong&gt;：用户只需提供一段文本描述，即可指导 Stable Diffusion 生成与其描述相符的图像，实现了从文本到图像的高效跨模态转换。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;开源与可部署&lt;/strong&gt;：作为一个开源项目，Stable Diffusion 拥有广泛的社区支持，允许任何人免费下载、部署和使用，促进了技术的普及和创新应用的发展。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;灵活性与适应性&lt;/strong&gt;：不仅适用于个人创意表达、数字艺术创作，还能够在计算机视觉、视频游戏、虚拟现实、广告设计等多个领域找到应用，展现了极高的应用灵活性和适应性。&lt;/p&gt;&lt;h3&gt;应用与扩展&lt;/h3&gt;&lt;p&gt;围绕 Stable Diffusion，开源社区构建了众多集成应用和衍生项目，如 Stable Diffusion WebUI、ComfyUI、Fooocus 等，这些项目提供了用户友好的界面和便捷的功能，使得非技术用户也能轻松利用 Stable Diffusion 进行创作。此外，模型分享和定制化训练也促进了 Stable Diffusion 在特定场景下的专业化应用。&lt;/p&gt;&lt;p&gt;综上所述，Stable Diffusion 是一款基于前沿扩散模型技术的文本到图像生成工具，以其高质量图像生成能力、文本驱动特性、开源属性以及广泛的应用前景，在AI绘画和AIGC领域占据重要地位。随着技术的持续发展和社区支持的不断壮大，Stable Diffusion 有望继续推动相关领域的创新与进步。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;个人笔记：&lt;/h2&gt;&lt;h4&gt;模型分类：&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;VAE&lt;/strong&gt;：&lt;/p&gt;&lt;p&gt;全名Variational autoencoder,中文名变分自编码器&lt;/p&gt;&lt;p&gt;作用：滤镜+微调&lt;/p&gt;&lt;p&gt;&lt;strong&gt;emdding&lt;/strong&gt;：&lt;/p&gt;&lt;p&gt;又名textual inversion，中文名嵌入or文本反转，通俗理解：提示词打包，可以将一段非常长的描述词打包成一个词直接调用。&lt;/p&gt;&lt;p&gt;下载：&lt;a href=&quot;https://civitai.com/&quot; _src=&quot;https://civitai.com/&quot;&gt;https://civitai.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2024/04/202404161442096224766.png&quot; alt=&quot;5kk3ij5nrlmnvf60npuq8jsell.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Lora&lt;/strong&gt;：&lt;/p&gt;&lt;p&gt;全称Low-Rank Adaptation of Large Language Models，直译为大语言模型的低阶适应，这是微软的研究人员为了解决大语言模型微调而开发的一项技术。&lt;/p&gt;&lt;p&gt;只要是图片特征几乎都可以训练，无论是动作、画风、物品细节、人物细节。&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;下载：&lt;/span&gt;&lt;a href=&quot;https://civitai.com/&quot; _src=&quot;https://civitai.com/&quot; style=&quot;text-wrap: wrap;&quot;&gt;https://civitai.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2024/04/202404161442475422591.png&quot; alt=&quot;6aodjsluo5ag85p3cuqn0fkrbl.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;hypernetworks&lt;/strong&gt;：&lt;/p&gt;&lt;p&gt;可以理解为是低配版的Lora&lt;/p&gt;&lt;p&gt;检查下载的文件是什么模型：&lt;a href=&quot;https://spell.novelai.dev/&quot; _src=&quot;https://spell.novelai.dev/&quot;&gt;https://spell.novelai.dev/&lt;/a&gt;&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;提示词基础知识&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;正面提示词&lt;/strong&gt;(想要什么写什么):&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;masterpiece, best quality, 8k, highres,&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;反面提示词&lt;/strong&gt;(不想要什么写什么):&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;((nsfw)), lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry&lt;/p&gt;&lt;/blockquote&gt;&lt;h3&gt;分类思路&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;比如描述一个女孩可分为:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;画质&lt;/strong&gt;:masterpiece,best quality,8k,highres,&lt;/p&gt;&lt;p&gt;&lt;strong&gt;主题&lt;/strong&gt;:photo of girl&lt;/p&gt;&lt;p&gt;&lt;strong&gt;人物属性描写&lt;/strong&gt;:头发长短，头发颜色，身材胖瘦...&lt;/p&gt;&lt;p&gt;&lt;strong&gt;人物衣服&lt;/strong&gt;:西服，太阳镜，帽子，高跟鞋...&lt;/p&gt;&lt;p&gt;&lt;strong&gt;背景&lt;/strong&gt;:街道，森林，城市，卧室，厨房...&lt;/p&gt;&lt;p&gt;&lt;strong&gt;画风&lt;/strong&gt;:现实...&lt;/p&gt;&lt;p&gt;&lt;strong&gt;镜头&lt;/strong&gt;:全身，半身，大头贴&lt;/p&gt;&lt;p&gt;&lt;strong&gt;其他&lt;/strong&gt;:太阳，冬天，温暖...&lt;/p&gt;&lt;p&gt;&lt;strong&gt;PS&lt;/strong&gt;:只能用英语，并用&amp;quot;,&amp;quot;隔开&lt;/p&gt;&lt;h3&gt;书写格式&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;一、内容&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;(1).单词:案例：1boy,handsome,sitting,sofa&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2024/04/202404161452396562713.png&quot; alt=&quot;450b6pucqoguuvtqm497fmlomv.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;(2).&lt;/span&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;词组&lt;span style=&quot;text-wrap: wrap;&quot;&gt;:案例：1handsome boy,sitting on the sofa&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2024/04/202404161453346288731.png&quot; alt=&quot;0on0gckgla19gp3epjeje3vcal.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;(3).短语:案例：1handsome boy is sitting on the sofa&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2024/04/202404161453576792097.png&quot; alt=&quot;62j90scbgdps8esgoc14hnql38.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二、分割&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1.不同的关键词tag之间，需要使用英文逗号分割，逗号前后有空格或者换行是不碍事的。&lt;/p&gt;&lt;p&gt;2.两个词之间的空格有变化的&lt;/p&gt;&lt;p&gt;3.越在前面的提示词权重越高，所以主体应该放在前面&lt;/p&gt;&lt;p&gt;4.,+空格是有效果的&lt;/p&gt;&lt;p&gt;5.描述同一类别的内容，会分别/混合出现&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三、增强/减弱&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1.(提示词:权重数值)&lt;/p&gt;&lt;p&gt;数值从0.1~100，默认状态是1，低于1就是减弱，大于1就是加强&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;(loli),(one girl:1.21),(cat ears:1.1)&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;2.(提示词)或[提示词]&lt;/p&gt;&lt;p&gt;每套一层()括号增强1.1倍，每套一层[]减弱1.1倍，也就是套两层是1.1*1.1=1.21倍，套三层是1.331倍，套4层是1.4641倍&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;((loli)),((one girl)),(cat ears),[flower hairpin]&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;四、混合&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1.用 AND 把多种要素强制融合画进去：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;1cat AND 1dog&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;2.可以 : 数字 增加权重：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;1cat:1.5 AND 1dog AND 1tiger&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;五、渐变&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1.[关键词1:关键词2:数字],[from:to:when]&lt;/p&gt;&lt;p&gt;数字大于1理解为第X步前为关键词1，第X步后变成关键词2&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;1man:flower:20&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;数字小于1理解为总步数的百分之X前为关键词1，之后变成关键词2&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;1man:flower:0.5&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;2.[关键词:数字],[to:when]：从XX比例/步开始画&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;flower:20&lt;/p&gt;&lt;p&gt;[flower:0.5]&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;3.[关键词::数字],[from::when]：到XX比例/步截止画&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;[flower::0.5]&lt;/p&gt;&lt;p&gt;[flower::20]&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;六、交替验算&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;语法：[关键词1|关键词2]&lt;/p&gt;&lt;p&gt;轮流使用关键词生成,某物与某物的交替演算，跟偏向与前面那个词&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;[cat|dog]&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;七、embedding&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;有些提示词其实是embedding&lt;/p&gt;&lt;p&gt;&lt;strong&gt;八、lora/hypernetwork&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3 style=&quot;text-wrap: wrap;&quot;&gt;文生图参数&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;一、宽度高度&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;分辨率大小如何设置？&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;过小的分辨率会导致图片生成质量低&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;分辨率至少有一个参数(宽度或高度)在512-768之间&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;如何生成大图？&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;建议先生成小图，在用高清修复进行放大&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;宽度高度和性能的关系？&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;分辨率越大，显存占用就越大，生成时间变慢&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;人物比例不协调咋办？&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;分辨率设置不合理会导致&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;点击上下箭头按钮&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;交换宽高&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;二、生成多张&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;生成批次&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;每次生成(每批数量)张&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;种子每次随机：如果随机种子固定，则每次种子数+1&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;每批数量&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;同时生成多张，每张种子数+1&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;拉高容易爆显存&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;提示词相关性&lt;br/&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;定义：&lt;/strong&gt;Classifier-free guidance(CFG) scale (CGF指数) 用来调节文本提示对扩散过程的引导程度。数值较高时会向你的提示进行生成&lt;/p&gt;&lt;p&gt;&lt;strong&gt;技巧：&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;CFG为0-1时，图像崩坏&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;CFG处于2-6时，生成图像比较有想象力&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;CFG处于7-12效果较好，既有创意也有能遵循我们的文本提示&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;CFG处于10-15时，提示词更多影响作品，对比度饱和度上升&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;CFG处于18-30时，画面逐渐崩坏，拉高采样迭代步数可以降低崩坏程度&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;随机种子&lt;/h3&gt;&lt;p&gt;简单理解：生成不同的噪点图&lt;/p&gt;&lt;h3&gt;内置插件&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;一、XYZ对照工具&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;语法：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;每次增加1&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;1-5=1,2,3,4,5&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;不同步长的方法&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;1-5(+2)=1,3,5&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;10-5(-3)=10,7&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;1-3(+0.5)=1,1.5,2,2.5,3&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;规定范围内分多少个&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;1-10[5] = 1,3,5,7,10&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;0.0-1.0[6] = 0.0,0.2,0.4,0.6,0.8,1.0&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;二、&lt;strong&gt;提示词矩阵&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;语法：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;正常提示词|改变提示词1|改变提示词2|改变提示词3....&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;a busy city street in a modern city|illustration|cinematic lighting&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;a busy city street in a modern city&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;a busy city street in a modern city, illustration&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;a busy city street in a modern city, cinematic lighting&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;a busy city street in a modern city, illustration, cinematic lighting&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;批量生成&lt;/h3&gt;&lt;p&gt;每一行为一张图。每个参数用--作为开头，空格作为分割&lt;/p&gt;&lt;p&gt;&lt;strong&gt;可控制参数&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;&amp;quot;sd_model&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;prompt&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;negative_prompt&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;seed&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;subseed_strength&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;subseed&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;seed_resize_from_h&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;seed_resize_from_w&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;sampler_index&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;sampler_name&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;batch_size&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;n_iter&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;steps&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;cfg_scale&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;width&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;height&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;restore_faces&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;tiling&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;do_not_save_samples&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;do_not_save_grid&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;outpath_samples&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;outpath_grids&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;prompt_for_display&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&amp;quot;styles&amp;quot;,&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;案例&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;--prompt &amp;quot;photo of sunset&amp;quot;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;--prompt &amp;quot;photo of sunset&amp;quot; --negative_prompt &amp;quot;orange,pink,red,sea,water,lake&amp;quot; --width 1024 --height 768 --sampler name &amp;quot;DPM++ 2M Karras&amp;quot; --steps 10 --batch_size 2 --cfg_scale 3 --seed 9&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;--prompt &amp;quot;photo of winter mountains&amp;quot; --steps 7 --sampler_name &amp;quot;DDIM&amp;quot;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;--prompt &amp;quot;photo of winter mountains&amp;quot; --width 1024&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 16 Apr 2024 14:05:52 +0800</pubDate></item><item><title>拓源纯净主题tpure 修改 站长简介 [图标]</title><link>https://daobk.com/post/177.html</link><description>&lt;p&gt;问题：我需要把微博图标修改成B站的图标。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.toyean.com/post/tpure.html&quot; target=&quot;_self&quot;&gt;拓源纯净主题tpure&lt;/a&gt; 修改 站长简介 [图标]&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2023/01/202301201345184728375.jpg&quot; alt=&quot;202301201345184728375.jpg&quot; title=&quot;202301201345184728375.jpg&quot;/&gt;&lt;/p&gt;&lt;p&gt;1.先根据 以下步骤 生成要添加的图标。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.toyean.com/post/menuicon.html&quot; target=&quot;_self&quot;&gt;拓源纯净主题添加导航栏目图标的方法&lt;/a&gt;&lt;/p&gt;&lt;p&gt;2.在 阿里矢量图 找到B站图标，并记录&amp;nbsp;Unicode(16进制) 名称。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2023/01/202301201352038216598.jpg&quot; alt=&quot;2.jpg&quot;/&gt;&lt;/p&gt;&lt;p&gt;3.找到 ..\zb_users\theme\tpure\style\style.css 文件内容：&lt;/p&gt;&lt;pre class=&quot;brush:css;toolbar:false&quot;&gt;p&amp;nbsp;a.weibo{border:1px&amp;nbsp;solid&amp;nbsp;#e6162d}.sideuserlink&amp;nbsp;
p&amp;nbsp;a.weibo::after{content:&amp;quot;\e612&amp;quot;;font-size:32px;color:#e6162d}.sideuserlink&lt;/pre&gt;&lt;p&gt;修改里面的“#e6162d”颜色信息和&amp;nbsp;&amp;quot;\e612&amp;quot;Unicode(16进制)&amp;nbsp;名称信息。&lt;/p&gt;&lt;p&gt;修改后内容&lt;/p&gt;&lt;pre class=&quot;brush:css;toolbar:false&quot;&gt;p&amp;nbsp;a.weibo{border:1px&amp;nbsp;solid&amp;nbsp;#00AEEC}.sideuserlink&amp;nbsp;
p&amp;nbsp;a.weibo::after{content:&amp;quot;\a25&amp;quot;;font-size:32px;color:#00AEEC}.sideuserlink&lt;/pre&gt;&lt;p&gt;4.找到..\zb_users\theme\tpure\language\下的&amp;nbsp;zh-cn.php和zh-tw.php里面的“微博”，改成“Bilibili”。&lt;/p&gt;&lt;p&gt;5.最后把&amp;nbsp;style.css、zh-cn.php和zh-tw.php文件 上传到网站并覆盖。(注意先备份一份原始文件)&lt;/p&gt;&lt;p&gt;6.进入后台→主题设置→侧栏设置→保存设置→打开首页按ctrl+F5 强制刷新即可。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2023/01/202301201444017011990.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Fri, 20 Jan 2023 13:41:57 +0800</pubDate></item><item><title>群晖NAS 部署webdav 文件大小解除限制</title><link>https://daobk.com/post/176.html</link><description>&lt;p&gt;在公司群晖NAS部署了webdav，但在家里的Windows10系统映射网络磁盘，复制资料会显示“0x800700DF: 文件大小超过允许的限制，无法保存”。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2023/01/20230119135631167410779176044.png&quot; alt=&quot;20230119135631167410779176044.png&quot; title=&quot;20230119135631167410779176044.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;解决方法&lt;/p&gt;&lt;p&gt;只需要修改注册表后重启电脑。&lt;/p&gt;&lt;p&gt;步骤：&lt;/p&gt;&lt;p&gt;1.运行（组合键win+R）&lt;/p&gt;&lt;p&gt;2.打开注册表（键入regedit）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2023/01/20230119143621167411018149793.png&quot; alt=&quot;20230119143621167411018149793.png&quot; title=&quot;20230119143621167411018149793.png&quot; style=&quot;white-space: normal;&quot;/&gt;&lt;/p&gt;&lt;p&gt;3.复制路径粘贴在顶部&amp;nbsp; &lt;span style=&quot;color: #4F81BD;&quot;&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2023/01/20230119143714167411023471676.png&quot; alt=&quot;20230119143714167411023471676.png&quot; title=&quot;20230119143714167411023471676.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;4.在右窗格中，右键单击 &lt;span style=&quot;color: #4F81BD;&quot;&gt;FileSizeLimitInBytes&lt;/span&gt;值，然后单击修改。&lt;/p&gt;&lt;p&gt;如果看不到FileSizeLimitInBytes值，右键单击右窗格中的空白区域，单击新建，单击DWORD 值，键入&lt;span style=&quot;color: #4F81BD;&quot;&gt;FileSizeLimitInBytes&lt;/span&gt;，然后单击OK.&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2023/01/20230119143658167411021831089.jpg&quot; alt=&quot;20230119143658167411021831089.jpg&quot; title=&quot;20230119143658167411021831089.jpg&quot;/&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2023/01/20230119143907167411034726033.jpg&quot; alt=&quot;20230119143907167411034726033.jpg&quot; title=&quot;20230119143907167411034726033.jpg&quot;/&gt;&lt;/p&gt;&lt;p&gt;十六进制下输入ffffffff（最大值），或者十进制下输入4294967295（最大值）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2023/01/20230119143959167411039945364.png&quot; alt=&quot;20230119143959167411039945364.png&quot; title=&quot;20230119143959167411039945364.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;退出注册表编辑器，并重新启动电脑。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</description><pubDate>Thu, 19 Jan 2023 14:41:08 +0800</pubDate></item><item><title>C# 集合数据处理的常用方法</title><link>https://daobk.com/post/174.html</link><description>&lt;p&gt;集合（Collection）类是专门用于数据存储和检索的类。这些类提供了对栈（stack）、队列（queue）、列表（list）和哈希表（hash table）的支持。大多数集合类实现了相同的接口。&lt;/p&gt;&lt;p&gt;集合（Collection）类服务于不同的目的，如为元素动态分配内存，基于索引访问列表项等等。这些类创建 Object 类的对象的集合。在 C# 中，Object 类是所有数据类型的基类。&lt;/p&gt;&lt;p&gt;所有集合都实现了IEnumerable接口，在这个接口中已经有了Where方法，使用扩展方法添加自己的MyWhere方法：&lt;/p&gt;&lt;pre class=&quot;brush:c#;toolbar:false&quot;&gt;using&amp;nbsp;System;
using&amp;nbsp;System.Collections.Generic;

namespace&amp;nbsp;集合扩展方法
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class&amp;nbsp;Program
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&amp;nbsp;void&amp;nbsp;Main(string[]&amp;nbsp;args)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int[]&amp;nbsp;nums&amp;nbsp;=&amp;nbsp;{&amp;nbsp;5,&amp;nbsp;5,&amp;nbsp;6,&amp;nbsp;9,&amp;nbsp;5,&amp;nbsp;2,&amp;nbsp;3,&amp;nbsp;6,&amp;nbsp;4,&amp;nbsp;12,&amp;nbsp;15,&amp;nbsp;4,&amp;nbsp;6,&amp;nbsp;18,&amp;nbsp;2,&amp;nbsp;3,&amp;nbsp;5,&amp;nbsp;6,&amp;nbsp;4,&amp;nbsp;8&amp;nbsp;};//整型数组
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IEnumerable&amp;lt;int&amp;gt;&amp;nbsp;r&amp;nbsp;=&amp;nbsp;nums.MyWhere(i&amp;nbsp;=&amp;gt;&amp;nbsp;i&amp;nbsp;&amp;gt;&amp;nbsp;8);//调用扩展方法，判断&amp;nbsp;i是否大于8
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreach&amp;nbsp;(var&amp;nbsp;item&amp;nbsp;in&amp;nbsp;r)//循环
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(item);//输出
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string[]&amp;nbsp;strs&amp;nbsp;=&amp;nbsp;{&amp;nbsp;&amp;quot;今天天气很好！&amp;quot;,&amp;nbsp;&amp;quot;吃过饭了吗？&amp;quot;,&amp;nbsp;&amp;quot;今天去哪里玩？&amp;quot;,&amp;nbsp;&amp;quot;明天去吃火锅！&amp;quot;,&amp;nbsp;&amp;quot;下个月去旅游。&amp;quot;,&amp;nbsp;&amp;quot;钱包里还有多少钱？&amp;quot;,&amp;nbsp;&amp;quot;今年多大了？&amp;quot;&amp;nbsp;};//字符串数组
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IEnumerable&amp;lt;string&amp;gt;&amp;nbsp;str&amp;nbsp;=&amp;nbsp;strs.MyWhere(s&amp;nbsp;=&amp;gt;&amp;nbsp;s.Contains(&amp;quot;？&amp;quot;));//判断字符串是否包含&amp;quot;？&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreach&amp;nbsp;(var&amp;nbsp;item&amp;nbsp;in&amp;nbsp;str)//循环
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(item);//输出
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.ReadKey();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&amp;nbsp;class&amp;nbsp;JiHe//静态类
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;MyWhere&amp;lt;T&amp;gt;(this&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;data,&amp;nbsp;Func&amp;lt;T,&amp;nbsp;bool&amp;gt;&amp;nbsp;func)//&amp;nbsp;扩展方法，返回&amp;nbsp;IEnumerable&amp;nbsp;类型
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&amp;lt;T&amp;gt;&amp;nbsp;resultList&amp;nbsp;=&amp;nbsp;new&amp;nbsp;List&amp;lt;T&amp;gt;();//声明泛型List
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreach&amp;nbsp;(var&amp;nbsp;item&amp;nbsp;in&amp;nbsp;data)//循环
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(func(item))//调用Func委托，判断
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resultList.Add(item);//添加元素到List列表
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;resultList;//返回
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;生成结果：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2019/01/201901201524306121876.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;集合常用扩展方法：&lt;/p&gt;&lt;pre class=&quot;brush:c#;toolbar:false&quot;&gt;using&amp;nbsp;System;
using&amp;nbsp;System.Collections.Generic;
using&amp;nbsp;System.Linq;

namespace&amp;nbsp;常用
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class&amp;nbsp;Program
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&amp;nbsp;void&amp;nbsp;Main(string[]&amp;nbsp;args)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&amp;lt;int&amp;gt;&amp;nbsp;list&amp;nbsp;=&amp;nbsp;new&amp;nbsp;List&amp;lt;int&amp;gt;();//列表
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(5);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(7);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(3);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(10);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(25);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(17);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(11);//添加元素

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;max&amp;nbsp;=&amp;nbsp;list.Max();//求最大值
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;min&amp;nbsp;=&amp;nbsp;list.Min();//求最小值
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;sum&amp;nbsp;=&amp;nbsp;list.Sum();//求总和
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;double&amp;nbsp;avg&amp;nbsp;=&amp;nbsp;list.Average();//求平均值
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;最大值:&amp;nbsp;{0}\r\n最小值:&amp;nbsp;{1}\r\n总和:&amp;nbsp;{2}\r\n平均值:&amp;nbsp;{3}\r\n&amp;quot;,max,min,sum,avg);//输出
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.ReadKey();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;生成结果：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2019/01/201901201552127942034.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;集合OrderBy扩展方法：&lt;/p&gt;&lt;pre class=&quot;brush:c#;toolbar:false&quot;&gt;using&amp;nbsp;System;
using&amp;nbsp;System.Collections.Generic;
using&amp;nbsp;System.Linq;

namespace&amp;nbsp;集合OrderBy
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class&amp;nbsp;Program
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&amp;nbsp;void&amp;nbsp;Main(string[]&amp;nbsp;args)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&amp;lt;int&amp;gt;&amp;nbsp;list&amp;nbsp;=&amp;nbsp;new&amp;nbsp;List&amp;lt;int&amp;gt;();//列表
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(5);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(7);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(3);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(10);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(25);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(17);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(11);//添加元素

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IEnumerable&amp;lt;int&amp;gt;&amp;nbsp;r&amp;nbsp;=&amp;nbsp;list.OrderBy(i&amp;nbsp;=&amp;gt;&amp;nbsp;i);//降序排序
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreach&amp;nbsp;(var&amp;nbsp;item&amp;nbsp;in&amp;nbsp;r)//循环
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(item);//输出
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.ReadKey();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;生成结果：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2019/01/201901201558124063430.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;集合自带的Where扩展方法：(对数据按照lambda表达式进行过滤)&lt;/p&gt;&lt;pre class=&quot;brush:c#;toolbar:false&quot;&gt;using&amp;nbsp;System;
using&amp;nbsp;System.Collections.Generic;
using&amp;nbsp;System.Linq;

namespace&amp;nbsp;集合Where
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class&amp;nbsp;Program
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&amp;nbsp;void&amp;nbsp;Main(string[]&amp;nbsp;args)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&amp;lt;int&amp;gt;&amp;nbsp;list&amp;nbsp;=&amp;nbsp;new&amp;nbsp;List&amp;lt;int&amp;gt;();//列表
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(5);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(7);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(3);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(10);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(25);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(17);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(11);//添加元素

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IEnumerable&amp;lt;int&amp;gt;&amp;nbsp;r&amp;nbsp;=&amp;nbsp;list.Where(i&amp;nbsp;=&amp;gt;&amp;nbsp;i&amp;nbsp;&amp;gt;&amp;nbsp;5);//通过IEnumerable接口实现Where扩展方法，i&amp;nbsp;=&amp;gt;&amp;nbsp;i&amp;nbsp;&amp;gt;&amp;nbsp;5&amp;nbsp;是&amp;nbsp;lambda表达式
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreach&amp;nbsp;(var&amp;nbsp;item&amp;nbsp;in&amp;nbsp;r)//循环
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(item);//输出
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.ReadKey();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;生成结果：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2019/01/201901201536228773053.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;集合自带的Select扩展方法：(对集合的数据按照lambda表达式进行处理，生成一个新的集合。集合长度一样。)&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;brush:c#;toolbar:false&quot;&gt;using&amp;nbsp;System;
using&amp;nbsp;System.Collections.Generic;
using&amp;nbsp;System.Linq;

namespace&amp;nbsp;集合Select
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class&amp;nbsp;Program
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&amp;nbsp;void&amp;nbsp;Main(string[]&amp;nbsp;args)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&amp;lt;int&amp;gt;&amp;nbsp;list&amp;nbsp;=&amp;nbsp;new&amp;nbsp;List&amp;lt;int&amp;gt;();//列表
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(5);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(7);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(3);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(10);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(25);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(17);//添加元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Add(11);//添加元素

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IEnumerable&amp;lt;int&amp;gt;&amp;nbsp;r&amp;nbsp;=&amp;nbsp;list.Select(i&amp;nbsp;=&amp;gt;&amp;nbsp;i&amp;nbsp;*&amp;nbsp;2);//将所有元素&amp;nbsp;*&amp;nbsp;2，保存到新表中，元素list表元素不变。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreach&amp;nbsp;(var&amp;nbsp;item&amp;nbsp;in&amp;nbsp;r)//循环
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(item);//输出
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.ReadKey();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;生成结果：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2019/01/201901201542219606033.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;First、FirstOrDefault、Single、SingleOrDefault扩展方法：&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;brush:c#;toolbar:false&quot;&gt;using&amp;nbsp;System;
using&amp;nbsp;System.Linq;

namespace&amp;nbsp;集合扩展方法1
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class&amp;nbsp;Program
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&amp;nbsp;void&amp;nbsp;Main(string[]&amp;nbsp;args)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string[]&amp;nbsp;strs1&amp;nbsp;=&amp;nbsp;{&amp;nbsp;};//没有元素的数组
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string[]&amp;nbsp;strs2&amp;nbsp;=&amp;nbsp;{&amp;nbsp;&amp;quot;A&amp;quot;&amp;nbsp;};//一个元素的数组
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string[]&amp;nbsp;strs3&amp;nbsp;=&amp;nbsp;{&amp;nbsp;&amp;quot;A&amp;quot;,&amp;nbsp;&amp;quot;B&amp;quot;&amp;nbsp;};//大于一个元素的数组

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//string&amp;nbsp;s1&amp;nbsp;=&amp;nbsp;strs1.First();//抛异常，集合不能为null。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;s2&amp;nbsp;=&amp;nbsp;strs2.First();//First&amp;nbsp;获取集合中的第一个元素，如果集合中一个元素都没有，则抛异常。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;s3&amp;nbsp;=&amp;nbsp;strs3.First();//First&amp;nbsp;获取集合中的第一个元素，如果集合中一个元素都没有，则抛异常。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;s2&amp;nbsp;获取：&amp;quot;&amp;nbsp;+&amp;nbsp;s2);//输出
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;s3&amp;nbsp;获取：&amp;quot;&amp;nbsp;+&amp;nbsp;s3);//输出

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;s4&amp;nbsp;=&amp;nbsp;strs1.FirstOrDefault();//FirstOrDefault&amp;nbsp;获取集合中的第一个元素，如果集合内没有元素，则返回集合类型的默认值。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;s5&amp;nbsp;=&amp;nbsp;strs2.FirstOrDefault();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;s6&amp;nbsp;=&amp;nbsp;strs3.FirstOrDefault();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;s4&amp;nbsp;获取：&amp;quot;&amp;nbsp;+&amp;nbsp;s4);//输出
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;s5&amp;nbsp;获取：&amp;quot;&amp;nbsp;+&amp;nbsp;s5);//输出
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;s6&amp;nbsp;获取：&amp;quot;&amp;nbsp;+&amp;nbsp;s6);//输出

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//string&amp;nbsp;s7&amp;nbsp;=&amp;nbsp;strs1.Single();//抛异常
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;s8&amp;nbsp;=&amp;nbsp;strs2.Single();//获取集合中的唯一一个元素，如果集合中没有元素或者多余一个元素，则抛异常
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//string&amp;nbsp;s9&amp;nbsp;=&amp;nbsp;strs3.Single();//抛异常
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;s8&amp;nbsp;获取：&amp;quot;&amp;nbsp;+&amp;nbsp;s8);//输出

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;s10&amp;nbsp;=&amp;nbsp;strs1.SingleOrDefault();//获取集合中的唯一一个元素，如果集合中没有元素则返回null。如果集合内多余一个元素，则抛异常。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;s11&amp;nbsp;=&amp;nbsp;strs2.SingleOrDefault();//获取第一个元素
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//string&amp;nbsp;s12&amp;nbsp;=&amp;nbsp;strs3.SingleOrDefault();//抛异常

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;s10&amp;nbsp;获取：&amp;quot;&amp;nbsp;+&amp;nbsp;s10);//输出
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;s11&amp;nbsp;获取：&amp;quot;&amp;nbsp;+&amp;nbsp;s11);//输出

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.ReadKey();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;生成结果：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2019/01/201901201638469329245.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 20px;&quot;&gt;&lt;strong style=&quot;color: rgb(255, 0, 0); white-space: normal;&quot;&gt;以上方法可以组合使用!&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;例如：&lt;/p&gt;&lt;pre class=&quot;brush:c#;toolbar:false&quot;&gt;int&amp;nbsp;r&amp;nbsp;=&amp;nbsp;list.Where(i&amp;nbsp;=&amp;gt;&amp;nbsp;i&amp;nbsp;&amp;gt;&amp;nbsp;5).Select(a=&amp;gt;a*2).OrderBy(o=&amp;gt;o).First();//获取大于5的数值，将数值&amp;nbsp;*&amp;nbsp;2，降序排列，获取第一个值。&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Sun, 20 Jan 2019 19:34:27 +0800</pubDate></item><item><title>C# lambda表达式学习</title><link>https://daobk.com/post/173.html</link><description>&lt;p&gt;Lambda 表达式是一种可用于创建 委托 或 表达式目录树 类型的 匿名函数 。 通过使用 lambda 表达式，可以写入可作为参数传递或作为函数调用值返回的本地函数。 Lambda 表达式对于编写 LINQ 查询表达式特别有用。&lt;/p&gt;&lt;p&gt;&amp;quot;Lambda表达式&amp;quot;是一个匿名函数，是一种高效的类似于函数式编程的表达式，Lambda简化了开发中需要编写的代码量。它可以包含表达式和语句，并且可用于创建委托或表达式目录树类型，支持带有可绑定到委托或表达式树的输入参数的内联表达式。所有Lambda表达式都使用Lambda运算符=&amp;gt;，该运算符读作&amp;quot;goes to&amp;quot;。Lambda运算符的左边是输入参数(如果有)，右边是表达式或语句块。Lambda表达式x =&amp;gt; x * x读作&amp;quot;x goes to x times x&amp;quot;。可以将此表达式分配给委托类型.&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2019/01/201901181024047891636.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;使用Lambda表达式简化委托：&lt;/p&gt;&lt;pre class=&quot;brush:c#;toolbar:false&quot;&gt;using&amp;nbsp;System;

namespace&amp;nbsp;lambda入门
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class&amp;nbsp;Program
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&amp;nbsp;void&amp;nbsp;Main(string[]&amp;nbsp;args)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Action&amp;lt;int&amp;gt;&amp;nbsp;a1&amp;nbsp;=&amp;nbsp;delegate&amp;nbsp;(int&amp;nbsp;i)&amp;nbsp;{&amp;nbsp;Console.WriteLine(&amp;quot;Action委托，使用匿名委托结果:&amp;quot;&amp;nbsp;+&amp;nbsp;i&amp;nbsp;*&amp;nbsp;1);&amp;nbsp;};//使用匿名委托。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Action&amp;nbsp;泛型委托，没有返回值，参数为&amp;nbsp;int&amp;nbsp;类型。&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a1(5);//调用

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Action&amp;lt;int&amp;gt;&amp;nbsp;a2&amp;nbsp;=&amp;nbsp;(int&amp;nbsp;i)&amp;nbsp;=&amp;gt;&amp;nbsp;{&amp;nbsp;Console.WriteLine(&amp;quot;Action委托，使用lambda表达式1结果:&amp;quot;&amp;nbsp;+&amp;nbsp;i&amp;nbsp;*&amp;nbsp;2);&amp;nbsp;};//lambda表达式
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a2(5);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Action&amp;lt;int&amp;gt;&amp;nbsp;a3&amp;nbsp;=&amp;nbsp;(i)&amp;nbsp;=&amp;gt;&amp;nbsp;{&amp;nbsp;Console.WriteLine(&amp;quot;Action委托，使用lambda表达式2结果:&amp;quot;&amp;nbsp;+&amp;nbsp;i&amp;nbsp;*&amp;nbsp;3);&amp;nbsp;};//可以省略&amp;nbsp;参数类型
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a3(5);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Action&amp;lt;int&amp;gt;&amp;nbsp;a4&amp;nbsp;=&amp;nbsp;i&amp;nbsp;=&amp;gt;&amp;nbsp;{&amp;nbsp;Console.WriteLine(&amp;quot;Action委托，使用lambda表达式3结果:&amp;quot;&amp;nbsp;+&amp;nbsp;i&amp;nbsp;*&amp;nbsp;4);&amp;nbsp;};//只有一个参数，可以省略&amp;nbsp;参数括号。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a4(5);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Func&amp;lt;string,&amp;nbsp;int,&amp;nbsp;string&amp;gt;&amp;nbsp;f1&amp;nbsp;=&amp;nbsp;delegate&amp;nbsp;(string&amp;nbsp;s,&amp;nbsp;int&amp;nbsp;i)&amp;nbsp;{&amp;nbsp;return&amp;nbsp;&amp;quot;Func委托，使用匿名委托结果:f1&amp;quot;&amp;nbsp;+&amp;nbsp;s&amp;nbsp;+&amp;nbsp;i;&amp;nbsp;};//使用匿名委托。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Func泛型委托，有返回值，最后一个参数类型是返回值类型。&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(f1(&amp;quot;字符串&amp;quot;,&amp;nbsp;1));

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Func&amp;lt;string,&amp;nbsp;int,&amp;nbsp;string&amp;gt;&amp;nbsp;f2&amp;nbsp;=&amp;nbsp;(string&amp;nbsp;s,&amp;nbsp;int&amp;nbsp;i)&amp;nbsp;=&amp;gt;&amp;nbsp;{&amp;nbsp;return&amp;nbsp;&amp;quot;Func委托，使用lambda表达式1结果:f2&amp;quot;&amp;nbsp;+&amp;nbsp;s&amp;nbsp;+&amp;nbsp;i;&amp;nbsp;};//lambda表达式
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(f2(&amp;quot;字符串&amp;quot;,&amp;nbsp;2));

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Func&amp;lt;string,&amp;nbsp;int,&amp;nbsp;string&amp;gt;&amp;nbsp;f3&amp;nbsp;=&amp;nbsp;(s,&amp;nbsp;i)&amp;nbsp;=&amp;gt;&amp;nbsp;{&amp;nbsp;return&amp;nbsp;&amp;quot;Func委托，使用lambda表达式2结果:f3&amp;quot;&amp;nbsp;+&amp;nbsp;s&amp;nbsp;+&amp;nbsp;i;&amp;nbsp;};//可以省略&amp;nbsp;参数类型,多个参数不可省略括号
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(f3(&amp;quot;字符串&amp;quot;,&amp;nbsp;3));

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Func&amp;lt;string,&amp;nbsp;int,&amp;nbsp;string&amp;gt;&amp;nbsp;f4&amp;nbsp;=&amp;nbsp;(s,&amp;nbsp;i)&amp;nbsp;=&amp;gt;&amp;nbsp;&amp;quot;Func委托，使用lambda表达式3结果:f4&amp;quot;&amp;nbsp;+&amp;nbsp;s&amp;nbsp;+&amp;nbsp;i;//只有一句返回值&amp;nbsp;可以省略&amp;nbsp;大括号和&amp;nbsp;return。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(f4(&amp;quot;字符串&amp;quot;,&amp;nbsp;4));

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Func&amp;lt;int,&amp;nbsp;int&amp;gt;&amp;nbsp;f5&amp;nbsp;=&amp;nbsp;i&amp;nbsp;=&amp;gt;&amp;nbsp;i&amp;nbsp;+&amp;nbsp;5;//只有一个参数可以省略参数小括号，&amp;nbsp;返回值&amp;nbsp;大括号和retur，可省略。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;Func委托，使用lambda表达式4结果:&amp;nbsp;f4&amp;quot;&amp;nbsp;+&amp;nbsp;f5(5));

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.ReadKey();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;生成结果：&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2019/01/201901181025323288089.png&quot; alt=&quot;Lambda表达式 委托简化&quot; width=&quot;382&quot; height=&quot;223&quot;/&gt;&lt;/p&gt;&lt;p&gt;使用Lambda表达式写出GetMax泛型方法：&lt;/p&gt;&lt;p&gt;比较整型数组大小和 类的大小。&lt;/p&gt;&lt;pre class=&quot;brush:c#;toolbar:false&quot;&gt;using&amp;nbsp;System;

namespace&amp;nbsp;Lambda表达式GetMax
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class&amp;nbsp;Program
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&amp;nbsp;void&amp;nbsp;Main(string[]&amp;nbsp;args)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int[]&amp;nbsp;nums&amp;nbsp;=&amp;nbsp;{&amp;nbsp;5,&amp;nbsp;8,&amp;nbsp;9,&amp;nbsp;6,&amp;nbsp;6,&amp;nbsp;4,&amp;nbsp;7,&amp;nbsp;8,&amp;nbsp;10,&amp;nbsp;16,&amp;nbsp;14,&amp;nbsp;13&amp;nbsp;};//整型数组
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;max1&amp;nbsp;=&amp;nbsp;GetMax(nums,&amp;nbsp;compareFunc);//调用compareFunc方法
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;max2&amp;nbsp;=&amp;nbsp;GetMax(nums,&amp;nbsp;delegate&amp;nbsp;(int&amp;nbsp;i1,&amp;nbsp;int&amp;nbsp;i2)&amp;nbsp;{&amp;nbsp;return&amp;nbsp;i1&amp;nbsp;&amp;gt;&amp;nbsp;i2;&amp;nbsp;});//匿名委托
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;max3&amp;nbsp;=&amp;nbsp;GetMax(nums,&amp;nbsp;(i1,&amp;nbsp;i2)&amp;nbsp;=&amp;gt;&amp;nbsp;{&amp;nbsp;return&amp;nbsp;i1&amp;nbsp;&amp;gt;&amp;nbsp;i2;&amp;nbsp;});//Lambda&amp;nbsp;省略参数类型。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;max4&amp;nbsp;=&amp;nbsp;GetMax(nums,&amp;nbsp;(i1,&amp;nbsp;i2)&amp;nbsp;=&amp;gt;&amp;nbsp;i1&amp;nbsp;&amp;gt;&amp;nbsp;i2);//Lambda&amp;nbsp;省略参数类型,只有一句返回值，可省略&amp;nbsp;大括号和return。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;max1结果：&amp;quot;&amp;nbsp;+&amp;nbsp;max1);//输出
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;max2结果：&amp;quot;&amp;nbsp;+&amp;nbsp;max2);//输出
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;max3结果：&amp;quot;&amp;nbsp;+&amp;nbsp;max3);//输出
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;max4结果：&amp;quot;&amp;nbsp;+&amp;nbsp;max4);//输出

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//比较两个类的大小。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person[]&amp;nbsp;ps&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Person[]&amp;nbsp;{&amp;nbsp;new&amp;nbsp;Person(&amp;quot;小白&amp;quot;,&amp;nbsp;18),&amp;nbsp;new&amp;nbsp;Person(&amp;quot;小黑&amp;quot;,&amp;nbsp;15),&amp;nbsp;new&amp;nbsp;Person(&amp;quot;小黄&amp;quot;,&amp;nbsp;20)&amp;nbsp;};//Person数组
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person&amp;nbsp;p&amp;nbsp;=&amp;nbsp;GetMax(ps,&amp;nbsp;(p1,&amp;nbsp;p2)&amp;nbsp;=&amp;gt;&amp;nbsp;p1.Age&amp;nbsp;&amp;gt;&amp;nbsp;p2.Age);//调用泛型方法。比较年龄大小
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;姓名:&amp;quot;+p.Name+&amp;quot;&amp;nbsp;年龄:&amp;quot;+p.Age);//输出

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.ReadKey();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&amp;nbsp;bool&amp;nbsp;compareFunc(int&amp;nbsp;i1,&amp;nbsp;int&amp;nbsp;i2)//判断方法
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;i1&amp;nbsp;&amp;gt;&amp;nbsp;i2;//返回比较大小
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&amp;nbsp;T&amp;nbsp;GetMax&amp;lt;T&amp;gt;(T[]&amp;nbsp;objs,&amp;nbsp;Func&amp;lt;T,&amp;nbsp;T,&amp;nbsp;bool&amp;gt;&amp;nbsp;compareFunc)//泛型方法
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;T&amp;nbsp;max&amp;nbsp;=&amp;nbsp;objs[0];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;objs.Length;&amp;nbsp;i++)//循环
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(compareFunc(objs[i],&amp;nbsp;max))//调用Func委托，结果返回比较大小.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;max&amp;nbsp;=&amp;nbsp;objs[i];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;max;//返回
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class&amp;nbsp;Person//类
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;string&amp;nbsp;Name&amp;nbsp;{&amp;nbsp;get;&amp;nbsp;set;&amp;nbsp;}//姓名属性
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;int&amp;nbsp;Age&amp;nbsp;{&amp;nbsp;get;&amp;nbsp;set;&amp;nbsp;}//年龄属性

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;Person(string&amp;nbsp;name,&amp;nbsp;int&amp;nbsp;age)//构造函数
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.Name&amp;nbsp;=&amp;nbsp;name;//赋值
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.Age&amp;nbsp;=&amp;nbsp;age;//赋值
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;生成结果：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2019/01/201901181102443156885.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Fri, 18 Jan 2019 11:05:30 +0800</pubDate></item><item><title>C# 扩展方法</title><link>https://daobk.com/post/172.html</link><description>&lt;p&gt;在C#3.0中引入了“扩展方法”，既有静态方法的优点，又使调用它们的代码的可读性得到了提高。在使用扩展方法时，可以像调用实例方法那样调用静态方法。&lt;/p&gt;&lt;p&gt;扩展方法的基本原则：&lt;/p&gt;&lt;p&gt;(1).C#只支持扩展方法，不支持扩展属性、扩展事件、扩展操作符等。&lt;/p&gt;&lt;p&gt;(2).扩展方法（第一个参数前面是this的方法）必须在非泛型的静态类中声明，扩展方法必须有一个参数，而且只有第一个参数使用this标记。&lt;/p&gt;&lt;p&gt;(3).C#编译器查找静态类中的扩展方法时，要求这些静态类本身必须具有文件作用域。&lt;/p&gt;&lt;p&gt;(4).C#编译要求“导入”扩展方法。（静态方法可以任意命名，C#编译器在寻找方法时，需要花费时间进行查找，需要检查文件作用域中的所有的静态类，并扫描它们的所有静态方法来查找一个匹配）&lt;/p&gt;&lt;p&gt;(5).多个静态类可以定义相同的扩展方法。&lt;/p&gt;&lt;p&gt;(6).用一个扩展方法扩展一个类型时，同时也扩展了派生类型。&amp;nbsp;&lt;/p&gt;&lt;p&gt;扩展方法声明：&lt;/p&gt;&lt;p&gt;(1).必须在一个非嵌套的、非泛型的静态类中（所以必须是一个静态方法）&lt;/p&gt;&lt;p&gt;(2).至少有一个参数。&lt;/p&gt;&lt;p&gt;(3).第一个参数必须附加this关键字做前缀。&lt;/p&gt;&lt;p&gt;(4).第一个参数不能有其他任何修饰符（如ref或out）。&lt;/p&gt;&lt;p&gt;(5).第一个参数的类型不能是指针类型。&lt;/p&gt;&lt;p&gt;扩展方法原理解析：&lt;/p&gt;&lt;p&gt;“扩展方法”是C#独有的一种方法，在扩展方法中会使用ExtensionAttribute这个attribute。&lt;/p&gt;&lt;p&gt;C#一旦使用this关键字标记了某个静态方法的第一个参数，编译器就会在内部向该方法应用一个定制的attribute，这个attribute会在最终生成的文件的元数据中持久性的存储下来，此属性在System.Core dll程序集中。&lt;/p&gt;&lt;p&gt;任何静态类只要包含了至少一个扩展方法，它的元数据中也会应用这个attribute，任何一个程序集包含了至少一个符合上述特点的静态类，它的元数据也会应用这个attribute。如果代码用了一个不存在的实例方法，编译器会快速的扫描引用的所有程序集，判断它们哪些包含了扩展方法，然后，在这个程序集中，可以扫描包含了扩展方法的静态类。&lt;/p&gt;&lt;p&gt;如果同一个命名空间中的两个类含有扩展类型相同的方法，就没有办法做到只用其中一个类中的扩展方法。为了通过类型的简单名称（没有命名空间前缀）来使用类型，可以导入该类型所有在的命名空间，但这样做的时候，你没有办法阻止那个命名空间中的扩展方法也被导入进来。&lt;/p&gt;&lt;p&gt;将字符串输出3次：&lt;/p&gt;&lt;pre class=&quot;brush:c#;toolbar:false&quot;&gt;using&amp;nbsp;System;

namespace&amp;nbsp;扩展方法
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class&amp;nbsp;Program
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&amp;nbsp;void&amp;nbsp;Main(string[]&amp;nbsp;args)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;s&amp;nbsp;=&amp;nbsp;&amp;quot;小道博客&amp;quot;;//字符串
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(KZFF.R(s,3));//输出&amp;nbsp;正常调用静态类的静态方法
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(s.R(3));//输出&amp;nbsp;调用扩展方法
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.ReadKey();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;class&amp;nbsp;KZFF//静态类
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;string&amp;nbsp;R(this&amp;nbsp;string&amp;nbsp;s,&amp;nbsp;int&amp;nbsp;count)//扩展方法，必须是静态方法
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;result&amp;nbsp;=&amp;nbsp;&amp;quot;&amp;quot;;//字符串
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;count;&amp;nbsp;i++)//循环
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;result&amp;nbsp;+=&amp;nbsp;s;//相加
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;result;//返回
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;生成结果：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2019/01/201901161611013605687.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;枚举类型的扩展方法：&lt;/p&gt;&lt;pre class=&quot;brush:c#;toolbar:false&quot;&gt;using&amp;nbsp;System;

namespace&amp;nbsp;枚举类型扩展方法
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;enum&amp;nbsp;Grades&amp;nbsp;{&amp;nbsp;F&amp;nbsp;=&amp;nbsp;0,&amp;nbsp;D&amp;nbsp;=&amp;nbsp;1,&amp;nbsp;C&amp;nbsp;=&amp;nbsp;2,&amp;nbsp;B&amp;nbsp;=&amp;nbsp;3,&amp;nbsp;A&amp;nbsp;=&amp;nbsp;4&amp;nbsp;};//枚举
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class&amp;nbsp;Program
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&amp;nbsp;void&amp;nbsp;Main(string[]&amp;nbsp;args)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;g1&amp;nbsp;=&amp;nbsp;Grades.F;//声明
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;g2&amp;nbsp;=&amp;nbsp;Grades.D;//声明
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;g3&amp;nbsp;=&amp;nbsp;Grades.B;//声明
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;g4&amp;nbsp;=&amp;nbsp;Grades.A;//声明
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;g1&amp;nbsp;{0}&amp;nbsp;通过!&amp;quot;,&amp;nbsp;g1.Passing()&amp;nbsp;?&amp;nbsp;&amp;quot;可以&amp;quot;&amp;nbsp;:&amp;nbsp;&amp;quot;不可以&amp;quot;);//调用&amp;nbsp;扩展方法，使用三元表达式判断
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;g2&amp;nbsp;{0}&amp;nbsp;通过!&amp;quot;,&amp;nbsp;g2.Passing()&amp;nbsp;?&amp;nbsp;&amp;quot;可以&amp;quot;&amp;nbsp;:&amp;nbsp;&amp;quot;不可以&amp;quot;);//调用&amp;nbsp;扩展方法，使用三元表达式判断
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;g3&amp;nbsp;{0}&amp;nbsp;通过!&amp;quot;,&amp;nbsp;g3.Passing()&amp;nbsp;?&amp;nbsp;&amp;quot;可以&amp;quot;&amp;nbsp;:&amp;nbsp;&amp;quot;不可以&amp;quot;);//调用&amp;nbsp;扩展方法，使用三元表达式判断
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;g4&amp;nbsp;{0}&amp;nbsp;通过!&amp;quot;,&amp;nbsp;g4.Passing()&amp;nbsp;?&amp;nbsp;&amp;quot;可以&amp;quot;&amp;nbsp;:&amp;nbsp;&amp;quot;不可以&amp;quot;);//调用&amp;nbsp;扩展方法，使用三元表达式判断
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.ReadKey();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;class&amp;nbsp;Extesions//静态类
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;Grades&amp;nbsp;minPassing&amp;nbsp;=&amp;nbsp;Grades.C;//静态字段
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;bool&amp;nbsp;Passing(this&amp;nbsp;Grades&amp;nbsp;grades)//扩展方法(静态方法)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;grades&amp;nbsp;&amp;gt;=&amp;nbsp;minPassing;//返回&amp;nbsp;判断结果
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;生成结果：&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2019/01/201901161625526435569.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;以上节选自《&lt;a href=&quot;https://www.cnblogs.com/pengze0902/p/6110094.html&quot; target=&quot;_blank&quot;&gt;博客园&lt;/a&gt;》&lt;/p&gt;</description><pubDate>Wed, 16 Jan 2019 16:26:20 +0800</pubDate></item><item><title>C# 委托复习</title><link>https://daobk.com/post/171.html</link><description>&lt;p&gt;今天复习一下委托，由于很长时间没有使用和复习委托，乍一看完全什么也不记得了，脑子里一点影响也没有了。于是看了看前面&lt;a href=&quot;https://daobk.com/post/110.html&quot; target=&quot;_blank&quot;&gt;委托的文章&lt;/a&gt;和传智的视频。才慢慢迷迷糊糊的想起来一点。敲敲代码就记起来了大概了，看来还是要多复习和多敲代码才行。&lt;/p&gt;&lt;p&gt;使用委托直接调用和使用方法调用委托调用方法：&lt;/p&gt;&lt;p&gt;如果方法的签名和委托签名一样可以传值。&lt;/p&gt;&lt;pre class=&quot;brush:c#;toolbar:false&quot;&gt;using&amp;nbsp;System;

namespace&amp;nbsp;委托复习
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;delegate&amp;nbsp;void&amp;nbsp;DelSay(string&amp;nbsp;name);&amp;nbsp;//声明委托类型
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class&amp;nbsp;Program
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&amp;nbsp;void&amp;nbsp;Main(string[]&amp;nbsp;args)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DelSay&amp;nbsp;d&amp;nbsp;=&amp;nbsp;new&amp;nbsp;DelSay(SayC);//声明委托对象
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//DelSay&amp;nbsp;d&amp;nbsp;=&amp;nbsp;SayC;&amp;nbsp;&amp;nbsp;声明委托对象&amp;nbsp;&amp;nbsp;语句简写
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;————使用委托直接调用————&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;d(&amp;quot;张三&amp;quot;);//委托调用
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;————使用方法调用委托调用————&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Test(&amp;quot;Tom&amp;quot;,SayE);//通过调用方法&amp;nbsp;调用委托。参数为，字符串&amp;nbsp;和&amp;nbsp;方法
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.ReadKey();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;void&amp;nbsp;Test(string&amp;nbsp;name,DelSay&amp;nbsp;del)//方法，参数为&amp;nbsp;字符串&amp;nbsp;和委托。委托可以简写&amp;nbsp;DelSay&amp;nbsp;d&amp;nbsp;=&amp;nbsp;SayC;&amp;nbsp;可以直接传方法
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;del(name);//调用委托
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;void&amp;nbsp;SayC(string&amp;nbsp;name)//中文打招呼&amp;nbsp;方法
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;你好！&amp;quot;+name);//输出
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;void&amp;nbsp;SayE(string&amp;nbsp;name)//英文打招呼&amp;nbsp;方法
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;Hello!&amp;quot;+name);//输出
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;生成结果：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2019/01/201901151356207297169.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;匿名方法：&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;brush:c#;toolbar:false&quot;&gt;using&amp;nbsp;System;

namespace&amp;nbsp;匿名
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;delegate&amp;nbsp;string&amp;nbsp;DelProStr(string&amp;nbsp;name);&amp;nbsp;//声明委托类型
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class&amp;nbsp;Program
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&amp;nbsp;void&amp;nbsp;Main(string[]&amp;nbsp;args)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string[]&amp;nbsp;names&amp;nbsp;=&amp;nbsp;{&amp;quot;ABCdEfgh&amp;quot;,&amp;quot;IjklMnOPq&amp;quot;,&amp;quot;RSTuvwXYz&amp;quot;&amp;nbsp;};//字符串数组
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProStr(names,delegate(string&amp;nbsp;name)&amp;nbsp;//方法，匿名方法
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;name.ToUpper();//转为大写字母
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//return&amp;nbsp;name.ToLower();//转为小写字母
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//return&amp;nbsp;&amp;quot;\&amp;quot;&amp;quot;&amp;nbsp;+&amp;nbsp;name&amp;nbsp;+&amp;nbsp;&amp;quot;\&amp;quot;&amp;quot;;//转为加&amp;nbsp;双引号
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;names.Length;&amp;nbsp;i++)//循环输出
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(names[i]);//输出
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.ReadKey();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;void&amp;nbsp;ProStr(string[]&amp;nbsp;name,DelProStr&amp;nbsp;del)//方法&amp;nbsp;参数：字符串数组&amp;nbsp;和&amp;nbsp;委托
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;name.Length;&amp;nbsp;i++)//循环
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name[i]&amp;nbsp;=&amp;nbsp;del(name[i]);//调用委托里面的方法
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;生成结果：&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2019/01/201901151412451646607.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;泛型委托：&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;brush:c#;toolbar:false&quot;&gt;using&amp;nbsp;System;

namespace&amp;nbsp;泛型委托
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class&amp;nbsp;Program
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;delegate&amp;nbsp;int&amp;nbsp;DelCompare&amp;lt;T&amp;gt;(T&amp;nbsp;t1,&amp;nbsp;T&amp;nbsp;T2);//声明委托类型(泛型)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&amp;nbsp;void&amp;nbsp;Main(string[]&amp;nbsp;args)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int[]&amp;nbsp;nums&amp;nbsp;=&amp;nbsp;{&amp;nbsp;1,&amp;nbsp;2,&amp;nbsp;3,&amp;nbsp;5,&amp;nbsp;6,&amp;nbsp;8,&amp;nbsp;9,&amp;nbsp;5,&amp;nbsp;1,&amp;nbsp;2,&amp;nbsp;3,&amp;nbsp;6,&amp;nbsp;5,&amp;nbsp;18,&amp;nbsp;8,&amp;nbsp;9,&amp;nbsp;2&amp;nbsp;};//整型数组
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;maxInt&amp;nbsp;=&amp;nbsp;GetMax&amp;lt;int&amp;gt;(nums,&amp;nbsp;Compare1);//调用方法&amp;nbsp;参数：整型数组&amp;nbsp;和&amp;nbsp;Compare1方法
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;整型数组最大值：&amp;quot;&amp;nbsp;+&amp;nbsp;maxInt);//输出

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string[]&amp;nbsp;strs&amp;nbsp;=&amp;nbsp;{&amp;quot;sadaqw&amp;quot;,&amp;quot;12e32wfwe32&amp;quot;,&amp;quot;dsfwq&amp;quot;,&amp;quot;dgdf25e&amp;quot;,&amp;quot;sdwq23&amp;quot;&amp;nbsp;};//字符串数组
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;maxStr&amp;nbsp;=&amp;nbsp;GetMax&amp;lt;string&amp;gt;(strs,&amp;nbsp;delegate&amp;nbsp;(string&amp;nbsp;s1,&amp;nbsp;string&amp;nbsp;s2)//调用方法&amp;nbsp;参数：字符串数组&amp;nbsp;和&amp;nbsp;匿名委托
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;s1.Length&amp;nbsp;-&amp;nbsp;s2.Length;//返回&amp;nbsp;字符串长度&amp;nbsp;相减结果
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;字符串数组最大值：&amp;quot;&amp;nbsp;+&amp;nbsp;maxStr);//输出
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.ReadKey();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;T&amp;nbsp;GetMax&amp;lt;T&amp;gt;(T[]&amp;nbsp;nums,&amp;nbsp;DelCompare&amp;lt;T&amp;gt;&amp;nbsp;del)//泛型方法
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;T&amp;nbsp;max&amp;nbsp;=&amp;nbsp;nums[0];//最大值
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;nums.Length;&amp;nbsp;i++)//循环
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(del(max,&amp;nbsp;nums[i])&amp;nbsp;&amp;lt;&amp;nbsp;0)//调用&amp;nbsp;委托方法&amp;nbsp;判断&amp;nbsp;返回值是否小于0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;max&amp;nbsp;=&amp;nbsp;nums[i];//赋值
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;max;//返回
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;int&amp;nbsp;Compare1(int&amp;nbsp;n1,&amp;nbsp;int&amp;nbsp;n2)//整型最大值判断&amp;nbsp;方法
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;n1&amp;nbsp;-&amp;nbsp;n2;//返回整型&amp;nbsp;数组相减结果
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;生成结果：&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2019/01/201901151441041242213.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;使用委托窗体传值：&lt;/p&gt;&lt;p&gt;窗体一：&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2019/01/201901151458087271547.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;pre class=&quot;brush:c#;toolbar:false&quot;&gt;using&amp;nbsp;System;
using&amp;nbsp;System.Windows.Forms;

namespace&amp;nbsp;窗体传值
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;partial&amp;nbsp;class&amp;nbsp;Form1&amp;nbsp;:&amp;nbsp;Form
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;Form1()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitializeComponent();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;void&amp;nbsp;button1_Click(object&amp;nbsp;sender,&amp;nbsp;EventArgs&amp;nbsp;e)//按钮单击事件
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Form2&amp;nbsp;f2&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Form2(showLabel);//实例化&amp;nbsp;窗体二&amp;nbsp;传入方法
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;f2.Show();//打开窗体二
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;showLabel(string&amp;nbsp;str)//方法
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;label1.Text&amp;nbsp;=&amp;nbsp;str;//标签显示
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;窗体二：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2019/01/201901151458303430941.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;pre class=&quot;brush:c#;toolbar:false&quot;&gt;using&amp;nbsp;System;
using&amp;nbsp;System.Windows.Forms;

namespace&amp;nbsp;窗体传值
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;delegate&amp;nbsp;void&amp;nbsp;Del(string&amp;nbsp;str);//委托类型
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;partial&amp;nbsp;class&amp;nbsp;Form2&amp;nbsp;:&amp;nbsp;Form
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;Del&amp;nbsp;_del;//委托字段
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;Form2(Del&amp;nbsp;del)//使用委托接收方法
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this._del&amp;nbsp;=&amp;nbsp;del;//赋值方法
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitializeComponent();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;void&amp;nbsp;button1_Click(object&amp;nbsp;sender,&amp;nbsp;EventArgs&amp;nbsp;e)//按钮单击事件
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this._del(textBox1.Text);//调用委托方法。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;生成结果：&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://daobk.com/zb_users/upload/2019/01/201901151459259595828.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;</description><pubDate>Tue, 15 Jan 2019 15:00:00 +0800</pubDate></item></channel></rss>