<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>C#</title>
        <link>http://geekswithblogs.net/argot/category/10904.aspx</link>
        <description>C#</description>
        <language>en-AU</language>
        <copyright>argot</copyright>
        <managingEditor>bruceworld@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Type constraints sadness</title>
            <link>http://geekswithblogs.net/argot/archive/2009/11/21/type-constraints-sadness.aspx</link>
            <description>&lt;div style="margin: 0cm 0cm 10pt"&gt;Although delegate type and Enum type are class types, we can not inherit from them as they are sealed classes after compile,&lt;/div&gt;
&lt;div style="line-height: normal"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;delegate &lt;span style="color: blue"&gt;void&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DelegateTestType&lt;/span&gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin: 0cm 0cm 10pt"&gt; &lt;/div&gt;
&lt;div style="margin: 0cm 0cm 10pt"&gt;//Compile time error&lt;/div&gt;
&lt;div style="line-height: normal"&gt;&lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myTest : DelegateTestType&lt;/span&gt;&lt;/div&gt;
&lt;div style="line-height: normal"&gt;{&lt;/div&gt;
&lt;div style="line-height: normal"&gt;&lt;span&gt;     ...&lt;/span&gt;&lt;/div&gt;
&lt;div style="line-height: normal"&gt;}&lt;/div&gt;
&lt;div style="margin: 0cm 0cm 10pt"&gt; &lt;/div&gt;
&lt;div style="margin: 0cm 0cm 10pt"&gt;we can not make it as a type constraint either on class or method:&lt;/div&gt;
&lt;div style="margin: 0cm 0cm 10pt"&gt;//Compile time error&lt;/div&gt;
&lt;div style="text-justify: inter-ideograph; text-align: justify; line-height: normal"&gt;&lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myTest&amp;lt;T&amp;gt; &lt;span style="color: blue"&gt;where&lt;/span&gt; T : DelegateTestType&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-justify: inter-ideograph; text-align: justify; line-height: normal"&gt;{&lt;/div&gt;
&lt;div style="text-justify: inter-ideograph; text-align: justify; line-height: normal"&gt;&lt;span&gt;       &lt;/span&gt;&lt;/div&gt;
&lt;div style="text-justify: inter-ideograph; text-align: justify; line-height: normal"&gt;}&lt;/div&gt;
&lt;div style="line-height: normal"&gt; &lt;/div&gt;
&lt;div style="line-height: 130%"&gt;&lt;span style="line-height: 130%; color: black; font-size: 11pt"&gt;From the &lt;a href="http://download.microsoft.com/download/9/8/f/98fdf0c7-2bbd-40d3-9fd1-5a4159fa8044/CSharp%202.0%20Specification_Sept_2005.doc"&gt;&lt;span style="color: #0077cc; text-decoration: none; text-underline: none"&gt;C# 2.0 specification&lt;/span&gt;&lt;/a&gt; we can read (20.7, Constraints):&lt;/span&gt;&lt;/div&gt;
&lt;div style="line-height: 130%"&gt; &lt;/div&gt;
&lt;div style="line-height: 130%; margin: 0cm 0cm 12pt"&gt;&lt;span style="color: black"&gt;A class-type constraint must satisfy the following rules:&lt;/span&gt;&lt;/div&gt;
&lt;div style="line-height: 130%; text-indent: -18pt; margin: 0cm 0cm 10pt 22.5pt"&gt;&lt;span style="line-height: 130%; color: black; font-size: 10pt"&gt;·&lt;span style="font: 7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;span style="color: black"&gt;The type must be a class type.&lt;/span&gt;&lt;/div&gt;
&lt;div style="line-height: 130%; text-indent: -18pt; margin: 0cm 0cm 10pt 22.5pt"&gt;&lt;span style="line-height: 130%; color: black; font-size: 10pt"&gt;·&lt;span style="font: 7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;span style="color: black"&gt;The type must not be sealed.&lt;/span&gt;&lt;/div&gt;
&lt;div style="line-height: 130%; text-indent: -18pt; margin: 0cm 0cm 10pt 22.5pt"&gt;&lt;span style="line-height: 130%; color: black; font-size: 10pt"&gt;·&lt;span style="font: 7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: black"&gt;The type must not be one of the following types: System.Array, System.Delegate, System.Enum, or System.ValueType&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black"&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div style="line-height: 130%; text-indent: -18pt; margin: 0cm 0cm 10pt 22.5pt"&gt;&lt;span style="line-height: 130%; color: black; font-size: 10pt"&gt;·&lt;span style="font: 7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;span style="color: black"&gt;The type must not be object. Because all types derive from object, such a constraint would have no effect if it were permitted.&lt;/span&gt;&lt;/div&gt;
&lt;div style="line-height: 130%; text-indent: -18pt; margin: 0cm 0cm 10pt 22.5pt"&gt;&lt;span style="line-height: 130%; color: black; font-size: 10pt"&gt;·&lt;span style="font: 7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;span style="color: black"&gt;At most one constraint for a given type parameter can be a class type.&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin: 0cm 0cm 10pt"&gt;In c# world we have to use some indirect ways, like type casting, wrapper class or examine the type is Delegate type, it is still a problem in C# 4.0, this is a bit sad as C++ can do it more than happily!&lt;/div&gt; &lt;img src="http://geekswithblogs.net/argot/aggbug/136451.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>argot</dc:creator>
            <guid>http://geekswithblogs.net/argot/archive/2009/11/21/type-constraints-sadness.aspx</guid>
            <pubDate>Sat, 21 Nov 2009 11:17:58 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/argot/comments/136451.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/argot/archive/2009/11/21/type-constraints-sadness.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/argot/comments/commentRss/136451.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Delegate in anonymous type</title>
            <link>http://geekswithblogs.net/argot/archive/2009/11/10/delegate-in-anonymous-type.aspx</link>
            <description>&lt;p&gt;&lt;font size="3"&gt;We all know the usage of the anonymous type:&lt;/font&gt;&lt;/p&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="LINE-HEIGHT: 115%; COLOR: blue; FONT-SIZE: 10pt"&gt;var&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-SIZE: 10pt"&gt; obj = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; { Name = &lt;span style="COLOR: #a31515"&gt;"John"&lt;/span&gt;, Age = 24 };&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;font size="3"&gt;What if we want to add a anonymous delegate or Lamba to it?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;Like:&lt;/font&gt;&lt;/p&gt;
&lt;div style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="COLOR: blue; FONT-SIZE: 10pt"&gt;var&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; obj = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; { Name = &lt;span style="COLOR: #a31515"&gt;"John"&lt;/span&gt;, Age = 24, behaviour=&lt;span style="COLOR: blue"&gt;delegate&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; name, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; age) { &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;"Customer Name: "&lt;/span&gt; + name + &lt;span style="COLOR: #a31515"&gt;", Age: "&lt;/span&gt; + age; } };&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;font size="3"&gt;or&lt;/font&gt; &lt;/p&gt;
&lt;div style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="COLOR: blue; FONT-SIZE: 10pt"&gt;var&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; obj = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; { Name = &lt;span style="COLOR: #a31515"&gt;"John"&lt;/span&gt;, Age = 24, behaviour = (name, age) =&amp;gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;.Format( &lt;span style="COLOR: #a31515"&gt;"Hello, {0}! You are {1} years old."&lt;/span&gt;, name, age ) };&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;font size="3" face=""&gt;The above two will cause compile time error, because anonymous type need anonymous type property, not the anonymous method or lambda expression.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;There is some way to do it:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;1. define a Func:&lt;/font&gt;&lt;font face=""&gt;&lt;span style="COLOR: #2b91af; FONT-SIZE: 10pt"&gt;&lt;span style="COLOR: #2b91af; FONT-SIZE: 10pt"&gt;&lt;span style="COLOR: #2b91af; FONT-SIZE: 10pt"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt; &lt;/p&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="COLOR: #2b91af; FONT-SIZE: 10pt"&gt;Func&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&amp;gt; behav =&lt;span style="COLOR: blue"&gt;delegate&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; name, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; age)&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            {&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;               &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;"Customer Name: "&lt;/span&gt; + name + &lt;span style="COLOR: #a31515"&gt;", Age: "&lt;/span&gt; + age;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            };&lt;/span&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;then we can do it:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;&lt;span style="COLOR: blue; FONT-SIZE: 10pt"&gt;var&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; obj = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; {Name = &lt;span style="COLOR: #a31515"&gt;"John"&lt;/span&gt;, Age = 24, behaviour = behav };&lt;/span&gt;&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;2. declare a delegate:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;&lt;span style="COLOR: blue; FONT-SIZE: 10pt"&gt;delegate&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;behav&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; name, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; age);&lt;/span&gt;&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;then we can do:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;&lt;span style="COLOR: blue; FONT-SIZE: 10pt"&gt;var&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; obj = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; { Name = &lt;span style="COLOR: #a31515"&gt;"John"&lt;/span&gt;, Age = 24, behaviour = (&lt;span style="COLOR: #2b91af"&gt;behav&lt;/span&gt;)&lt;span style="COLOR: blue"&gt;delegate&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; name, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; age) { &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;"Customer Name: "&lt;/span&gt; + name + &lt;span style="COLOR: #a31515"&gt;", Age: "&lt;/span&gt; + age; } };&lt;/span&gt;&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;font size="3" face=""&gt;or&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;&lt;span style="COLOR: blue; FONT-SIZE: 10pt"&gt;var&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; obj = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; { Name = &lt;span style="COLOR: #a31515"&gt;"John"&lt;/span&gt;, Age = 24, behaviour = (&lt;span style="COLOR: #2b91af"&gt;behav&lt;/span&gt;)((name, age) =&amp;gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="COLOR: #a31515"&gt;"Hello, {0}! You are {1} years old."&lt;/span&gt;, name, age)) };&lt;/span&gt;&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;This is the demonstration only, if we want to use &lt;font face=""&gt;IEnumerable&amp;lt;AnonymousType&amp;gt;, as anonymous type can only be cast as object, there is article &lt;a href="http://mikehadlow.blogspot.com/2008/04/extension-properties-for-easy.html"&gt;here&lt;/a&gt; to describe how to use it. Here is another solution:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;font size="3"&gt;&lt;font face=""&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="COLOR: blue; FONT-SIZE: 10pt"&gt;class&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; &lt;span style="COLOR: #2b91af"&gt;Foo&lt;/span&gt;&amp;lt;TName, TAge, TBehaviour&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;object&lt;/span&gt;&amp;gt; Collection { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; Foo()&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    {&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        Collection = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;object&lt;/span&gt;&amp;gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    }&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; AddValue(TName name, TAge age, TBehaviour func)&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    {&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        &lt;strong&gt;&lt;span style="COLOR: blue"&gt;var&lt;/span&gt; cust = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; { CustomerName = name, Customerage = age, Behaviour = func };&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        Collection.Add(cust);&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    }&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="COLOR: blue; FONT-SIZE: 10pt"&gt;static&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; T Cast&amp;lt;T&amp;gt;(&lt;span style="COLOR: blue"&gt;object&lt;/span&gt; obj, T type)&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; (T)obj;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="COLOR: blue; FONT-SIZE: 10pt"&gt;static&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Main(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[] args)&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    &lt;span style="COLOR: #2b91af"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&amp;gt; behav =&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    &lt;span style="COLOR: blue"&gt;delegate&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; name, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; age)&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    {&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;"Customer Name: "&lt;/span&gt; + name + &lt;span style="COLOR: #a31515"&gt;", Age: "&lt;/span&gt; + age;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    };&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    &lt;span style="COLOR: blue"&gt;var&lt;/span&gt; _foo = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Foo&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt;, &lt;span style="COLOR: #2b91af"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&amp;gt;&amp;gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    _foo.AddValue(&lt;span style="COLOR: #a31515"&gt;"John"&lt;/span&gt;, 24, behav);&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    _foo.AddValue(&lt;span style="COLOR: #a31515"&gt;"Tom"&lt;/span&gt;, 26, &lt;span style="COLOR: blue"&gt;delegate&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; name, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; age) { &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;"Customer Name: "&lt;/span&gt; + name + &lt;span style="COLOR: #a31515"&gt;", Age: "&lt;/span&gt; + age; });&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    _foo.AddValue(&lt;span style="COLOR: #a31515"&gt;"Tim"&lt;/span&gt;, 30, (name, age) =&amp;gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="COLOR: #a31515"&gt;"Hello, {0}! You are {1} years old."&lt;/span&gt;, name, age));&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    &lt;span style="COLOR: blue"&gt;var&lt;/span&gt; typeinfo = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; { CustomerName = &lt;span style="COLOR: #a31515"&gt;""&lt;/span&gt;, Customerage = 0, Behaviour = behav };&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    &lt;span style="COLOR: blue"&gt;foreach&lt;/span&gt; (&lt;span style="COLOR: blue"&gt;var&lt;/span&gt; customer &lt;span style="COLOR: blue"&gt;in&lt;/span&gt; _foo.Collection)&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    {&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        &lt;span style="COLOR: blue"&gt;var&lt;/span&gt; typed = Cast(customer, typeinfo);&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        &lt;span style="COLOR: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(typed.Behaviour(typed.CustomerName, typed.Customerage));&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    }&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;}
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;&lt;font face=""&gt;Otherwise we can do it without anonymous type as below:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt; &lt;/font&gt; &lt;/p&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="COLOR: blue; FONT-SIZE: 10pt"&gt;        public&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Customer&lt;/span&gt;&amp;lt;TCustomerName, TCustomerAge, TFunction&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        {&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; TCustomerName CustomerName { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; TCustomerAge Customerage { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; TFunction Behaviour { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        }&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Foo&lt;/span&gt;&amp;lt;TName, TAge, TBehaviour&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        {&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR: #2b91af"&gt;Customer&lt;/span&gt;&amp;lt;TName, TAge, TBehaviour&amp;gt;&amp;gt; Collection { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; Foo()&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            {&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                Collection = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR: #2b91af"&gt;Customer&lt;/span&gt;&amp;lt;TName, TAge, TBehaviour&amp;gt;&amp;gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            }&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; AddValue(TName name, TAge age, TBehaviour func)&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            {&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;strong&gt;&lt;span style="COLOR: blue"&gt;var&lt;/span&gt; cust = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Customer&lt;/span&gt;&amp;lt;TName, TAge, TBehaviour&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;strong&gt;                    {CustomerName = name, Customerage = age, Behaviour = func};&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                Collection.Add(cust);&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            }&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        }&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Main(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[] args)&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        {&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: #2b91af"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&amp;gt; behav =&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: blue"&gt;delegate&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; name, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; age)&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            {&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;"Customer Name: "&lt;/span&gt; + name + &lt;span style="COLOR: #a31515"&gt;", Age: "&lt;/span&gt; + age;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            };&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: blue"&gt;var&lt;/span&gt; _foo = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Foo&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt;, &lt;span style="COLOR: #2b91af"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&amp;gt;&amp;gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            _foo.AddValue(&lt;span style="COLOR: #a31515"&gt;"John"&lt;/span&gt;, 24, behav);&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            _foo.AddValue(&lt;span style="COLOR: #a31515"&gt;"Tom"&lt;/span&gt;, 26, &lt;span style="COLOR: blue"&gt;delegate&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; name, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; age) { &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;"Customer Name: "&lt;/span&gt; + name + &lt;span style="COLOR: #a31515"&gt;", Age: "&lt;/span&gt; + age; });&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            _foo.AddValue(&lt;span style="COLOR: #a31515"&gt;"Tim"&lt;/span&gt;, 30, (name, age) =&amp;gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="COLOR: #a31515"&gt;"Hello, {0}! You are {1} years old."&lt;/span&gt;, name, age));&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: blue"&gt;foreach&lt;/span&gt; (&lt;span style="COLOR: blue"&gt;var&lt;/span&gt; customer &lt;span style="COLOR: blue"&gt;in&lt;/span&gt; _foo.Collection)&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;span style="COLOR: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(customer.Behaviour(customer.CustomerName, customer.Customerage));&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        }&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;In .Net 4.0, you even can do it more flexible by using dynamic type:&lt;/p&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="COLOR: blue; FONT-SIZE: 9.5pt"&gt;class&lt;/span&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt; &lt;span style="COLOR: #2b91af"&gt;Foo&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;object&lt;/span&gt;&amp;gt; Collection { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;; }&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; Foo()&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    {&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;        Collection = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;object&lt;/span&gt;&amp;gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    }&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; AddValue(&lt;span style="COLOR: blue"&gt;dynamic&lt;/span&gt; name, &lt;span style="COLOR: blue"&gt;dynamic&lt;/span&gt; age, &lt;span style="COLOR: #2b91af"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;dynamic&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;dynamic&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;dynamic&lt;/span&gt;&amp;gt; func)&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    {&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;        &lt;span style="COLOR: blue"&gt;var&lt;/span&gt; cust = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; { CustomerName = name, Customerage = age, Behaviour = func };&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;        Collection.Add(cust);&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    }&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="COLOR: blue; FONT-SIZE: 9.5pt"&gt;static&lt;/span&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt; T Cast&amp;lt;T&amp;gt;(&lt;span style="COLOR: blue"&gt;object&lt;/span&gt; obj, T type)&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; (T)obj;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="COLOR: blue; FONT-SIZE: 9.5pt"&gt;static&lt;/span&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Main(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[] args)&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    &lt;span style="COLOR: #2b91af"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;dynamic&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;dynamic&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;dynamic&lt;/span&gt;&amp;gt; behav =&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    &lt;span style="COLOR: blue"&gt;delegate&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;dynamic&lt;/span&gt; name, &lt;span style="COLOR: blue"&gt;dynamic&lt;/span&gt; age)&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    {&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;        &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;"Customer Name: "&lt;/span&gt; + name + &lt;span style="COLOR: #a31515"&gt;", Age: "&lt;/span&gt; + age;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    };&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    &lt;span style="COLOR: blue"&gt;var&lt;/span&gt; _foo = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Foo&lt;/span&gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    _foo.AddValue(&lt;span style="COLOR: #a31515"&gt;"John"&lt;/span&gt;, &lt;span style="COLOR: brown"&gt;24&lt;/span&gt;, behav);&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    _foo.AddValue(&lt;strong&gt;&lt;u&gt;&lt;span style="COLOR: #2b91af"&gt;DateTime&lt;/span&gt;.Now&lt;/u&gt;&lt;/strong&gt;, &lt;span style="COLOR: brown"&gt;26&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;delegate&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;dynamic&lt;/span&gt; name, &lt;span style="COLOR: blue"&gt;dynamic&lt;/span&gt; age) { &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;"Customer Name: "&lt;/span&gt; + name + &lt;span style="COLOR: #a31515"&gt;", Age: "&lt;/span&gt; + age; });&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    _foo.AddValue(&lt;strong&gt;&lt;u&gt;&lt;span style="COLOR: #2b91af"&gt;Int32&lt;/span&gt;.MaxValue&lt;/u&gt;&lt;/strong&gt;, &lt;span style="COLOR: brown"&gt;30&lt;/span&gt;, (name, age) =&amp;gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="COLOR: #a31515"&gt;"Hello, {0}! You are {1} years old."&lt;/span&gt;, name, age));&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    &lt;span style="COLOR: blue"&gt;var&lt;/span&gt; typeinfo = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; { CustomerName = (&lt;span style="COLOR: blue"&gt;dynamic&lt;/span&gt;)&lt;span style="COLOR: #a31515"&gt;""&lt;/span&gt;, Customerage = (&lt;span style="COLOR: blue"&gt;dynamic&lt;/span&gt;)&lt;span style="COLOR: brown"&gt;0&lt;/span&gt;, Behaviour = behav };&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    &lt;span style="COLOR: blue"&gt;foreach&lt;/span&gt; (&lt;span style="COLOR: blue"&gt;var&lt;/span&gt; customer &lt;span style="COLOR: blue"&gt;in&lt;/span&gt; _foo.Collection)&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    {&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;        &lt;span style="COLOR: blue"&gt;var&lt;/span&gt; typed = Cast(customer, typeinfo);&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;        &lt;span style="COLOR: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(typed.Behaviour(typed.CustomerName, typed.Customerage));&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    }&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;    &lt;span style="COLOR: #2b91af"&gt;Console&lt;/span&gt;.Read();&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 9.5pt"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 10pt"&gt;&lt;/div&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt; &lt;img src="http://geekswithblogs.net/argot/aggbug/136169.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>argot</dc:creator>
            <guid>http://geekswithblogs.net/argot/archive/2009/11/10/delegate-in-anonymous-type.aspx</guid>
            <pubDate>Tue, 10 Nov 2009 02:42:38 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/argot/comments/136169.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/argot/archive/2009/11/10/delegate-in-anonymous-type.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/argot/comments/commentRss/136169.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>
