<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/smitcham/category/7210.aspx</link>
        <description>C#</description>
        <language>en-US</language>
        <copyright>Steven Mitcham</copyright>
        <managingEditor>smitcham@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Extension Methods and Dictionaries</title>
            <link>http://geekswithblogs.net/smitcham/archive/2007/10/19/Extension-Methods-and-Dictionaries.aspx</link>
            <description>&lt;p&gt;I have started looking at improvements to the NMock2 code with respect to writing a branch of the code in .NET 3.5.&lt;/p&gt;  &lt;p&gt;The availability of extension methods in C# 3.0 have solved a common code issue of mine where I want to use Dictionary.TryGetValue to see if there is a value in a dictionary for a given key and create a default if not.  Which leads to the following code.&lt;/p&gt;  &lt;p&gt;public static class ExtensionMethods   &lt;br /&gt;{    &lt;br /&gt;    public static U SafeGetValue&amp;lt;T,U&amp;gt;(this Dictionary&amp;lt;T,U&amp;gt; dictionary, T key)     &lt;br /&gt;      where U:new()    &lt;br /&gt;    {    &lt;br /&gt;        U value;    &lt;br /&gt;        if (!dictionary.TryGetValue(key, out value))    &lt;br /&gt;        {    &lt;br /&gt;            dictionary[key] = value = new U();    &lt;br /&gt;        }    &lt;br /&gt;        return value;    &lt;br /&gt;    } &lt;/p&gt;  &lt;p&gt;    public delegate U NewInstance&amp;lt;U&amp;gt;(); &lt;/p&gt;  &lt;p&gt;    public static U SafeGetValue&amp;lt;T, U&amp;gt;(this Dictionary&amp;lt;T, U&amp;gt; dictionary, T key, NewInstance&amp;lt;U&amp;gt; newInstance)   &lt;br /&gt;    {    &lt;br /&gt;        U value;    &lt;br /&gt;        if (!dictionary.TryGetValue(key, out value))    &lt;br /&gt;        {    &lt;br /&gt;            dictionary[key] = value = newInstance();    &lt;br /&gt;        }    &lt;br /&gt;        return value;    &lt;br /&gt;    }    &lt;br /&gt;} &lt;/p&gt; &lt;img src="http://geekswithblogs.net/smitcham/aggbug/116170.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Steven Mitcham</dc:creator>
            <guid>http://geekswithblogs.net/smitcham/archive/2007/10/19/Extension-Methods-and-Dictionaries.aspx</guid>
            <pubDate>Fri, 19 Oct 2007 20:24:54 GMT</pubDate>
            <comments>http://geekswithblogs.net/smitcham/archive/2007/10/19/Extension-Methods-and-Dictionaries.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/smitcham/comments/commentRss/116170.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/smitcham/services/trackbacks/116170.aspx</trackback:ping>
        </item>
    </channel>
</rss>
