<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>C-Sharp on DoDoRo的梦想空间-码农,数学,算法,哲学,园艺</title>
    <link>https://dodoro.chouxiangpai.com/tags/c-sharp/</link>
    <description>Recent content in C-Sharp on DoDoRo的梦想空间-码农,数学,算法,哲学,园艺</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Thu, 08 Aug 2013 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://dodoro.chouxiangpai.com/tags/c-sharp/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>[转]C#中的委托,匿名方法和Lambda表达式</title>
      <link>https://dodoro.chouxiangpai.com/archives/457/</link>
      <pubDate>Thu, 08 Aug 2013 00:00:00 +0000</pubDate>
      <guid>https://dodoro.chouxiangpai.com/archives/457/</guid>
      <description>&lt;h2 id=&#34;一简介&#34;&gt;一、简介&lt;/h2&gt;
&lt;p&gt;在.NET中，委托，匿名方法和Lambda表达式很容易发生混淆。我想下面的代码能证实这点。下面哪一个First会被编译？哪一个会返回我们需要的结果？即Customer.ID=5.答案是6个First不仅被编译，并都获得正确答案，且他们的结果一样。如果你对此感到困惑，那么请继续看这篇文章。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;&lt;/th&gt;
					&lt;th&gt;&lt;code&gt;class&lt;/code&gt; &lt;code&gt;Customer&lt;/code&gt;  &lt;code&gt;{&lt;/code&gt;      &lt;code&gt;public&lt;/code&gt; &lt;code&gt;int&lt;/code&gt; &lt;code&gt;ID {&lt;/code&gt; &lt;code&gt;get``;&lt;/code&gt; &lt;code&gt;set``; }&lt;/code&gt;      &lt;code&gt;public&lt;/code&gt; &lt;code&gt;static&lt;/code&gt; &lt;code&gt;bool&lt;/code&gt; &lt;code&gt;Test(Customer x)&lt;/code&gt;      &lt;code&gt;{&lt;/code&gt;          &lt;code&gt;return&lt;/code&gt; &lt;code&gt;x.ID == 5;&lt;/code&gt;      &lt;code&gt;}&lt;/code&gt;  &lt;code&gt;}&lt;/code&gt;  &lt;code&gt;...&lt;/code&gt;  &lt;code&gt;List&amp;lt;Customer&amp;gt; custs =&lt;/code&gt; &lt;code&gt;new&lt;/code&gt; &lt;code&gt;List&amp;lt;Customer&amp;gt;();&lt;/code&gt;  &lt;code&gt;custs.Add(``new&lt;/code&gt; &lt;code&gt;Customer() { ID = 1 });&lt;/code&gt;  &lt;code&gt;custs.Add(``new&lt;/code&gt; &lt;code&gt;Customer() { ID = 5 });&lt;/code&gt;  &lt;code&gt;custs.First(``new&lt;/code&gt; &lt;code&gt;Func&amp;lt;Customer,&lt;/code&gt; &lt;code&gt;bool``&amp;gt;(``delegate``(Customer x) {&lt;/code&gt; &lt;code&gt;return&lt;/code&gt; &lt;code&gt;x.ID == 5; }));&lt;/code&gt;  &lt;code&gt;custs.First(``new&lt;/code&gt; &lt;code&gt;Func&amp;lt;Customer,&lt;/code&gt; &lt;code&gt;bool``&amp;gt;((Customer x) =&amp;gt; x.ID == 5));&lt;/code&gt;  &lt;code&gt;custs.First(``delegate``(Customer x) {&lt;/code&gt; &lt;code&gt;return&lt;/code&gt; &lt;code&gt;x.ID == 5; });&lt;/code&gt;  &lt;code&gt;custs.First((Customer x) =&amp;gt; x.ID == 5);&lt;/code&gt;  &lt;code&gt;custs.First(x =&amp;gt; x.ID == 5);&lt;/code&gt;  &lt;code&gt;custs.First(Customer.Test);&lt;/code&gt;&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;二什么是委托&#34;&gt;&lt;strong&gt;二、什么是委托？&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;现在你定义一个处理用户订单的购物车ShoppingCart类。管理层决定根据数量，价格等给客人折扣。做为其中的一部分，他们已经实现了处理订单时你要考虑一方面。不用考虑过多，你简单声明一个变量来保存有“吸引力的折扣”(magicDisCount)，然后实现逻辑。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
