<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>The Technical Adventures of Adam Weigert : Orcas</title><link>http://weblogs.asp.net/adweigert/archive/tags/Orcas/default.aspx</link><description>Tags: Orcas</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>C#: My First Lambda Expression</title><link>http://weblogs.asp.net/adweigert/archive/2007/12/16/c-my-first-lamba-expression.aspx</link><pubDate>Sun, 16 Dec 2007 12:56:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5461335</guid><dc:creator>adweigert</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/adweigert/rsscomments.aspx?PostID=5461335</wfw:commentRss><comments>http://weblogs.asp.net/adweigert/archive/2007/12/16/c-my-first-lamba-expression.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;I don't know about anyone else, but I found it annoying to have to put on&amp;nbsp;three-lines of code (or one ugly one-line of code) for an&amp;nbsp;IF statement for argument validation. Mostly, I want to check a simple condition and if true, throw an exception. Well, lambda to the rescue! I find the lambda version much more readable than a one-line IF statement, but that is just me -- mainly because I dislike one-line IF statements.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Another advantage of the lamba expression is that the "new Exception" is only created if the delegate is called when the condition is true. Who knows, maybe I'll change my mind on liking this after I have more experience with .NET 3.5, but for now I think this is very cool...&lt;/P&gt;
&lt;P mce_keep="true"&gt;I guess this will have to do until we have MACRO replacement in C# ... :)&lt;/P&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Lucida Console, Courier New, Courier, monospace"&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;delegate&lt;/FONT&gt; T &lt;/FONT&gt;&lt;FONT color=#2b91af&gt;CreateObjectDelegate&lt;/FONT&gt;&amp;lt;T&amp;gt;();&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;internal&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;class&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;Validator&lt;BR&gt;&lt;/FONT&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; ThrowIf(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;bool&lt;/FONT&gt; condition, &lt;/FONT&gt;&lt;FONT color=#2b91af&gt;CreateObjectDelegate&lt;/FONT&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#2b91af&gt;Exception&lt;/FONT&gt;&amp;gt; createObject)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt; (condition)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;throw&lt;/FONT&gt; createObject();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;internal&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;class&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;Example&lt;BR&gt;&lt;/FONT&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;void&lt;/FONT&gt; ShowName(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; name)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#008000&gt;// LAMBA expression&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#2b91af&gt;Validator&lt;/FONT&gt;.ThrowIf(&lt;/FONT&gt;name.IsNullOrEmpty(), () =&amp;gt; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;ArgumentException&lt;/FONT&gt;(&lt;/FONT&gt;&lt;FONT color=#a31515&gt;"The parameter is required."&lt;/FONT&gt;, &lt;/FONT&gt;&lt;FONT color=#a31515&gt;"name"&lt;/FONT&gt;));&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#008000&gt;// IF statement&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt; (&lt;/FONT&gt;name.IsNullOrEmpty()) &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;throw&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;ArgumentException&lt;/FONT&gt;(&lt;/FONT&gt;&lt;FONT color=#a31515&gt;"The parameter is required."&lt;/FONT&gt;, &lt;/FONT&gt;&lt;FONT color=#a31515&gt;"name"&lt;/FONT&gt;);&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#2b91af&gt;Console&lt;/FONT&gt;.WriteLine(name);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5461335" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/adweigert/archive/tags/c_2300_/default.aspx">c#</category><category domain="http://weblogs.asp.net/adweigert/archive/tags/.net/default.aspx">.net</category><category domain="http://weblogs.asp.net/adweigert/archive/tags/Orcas/default.aspx">Orcas</category></item><item><title>C#: My First Extension Method</title><link>http://weblogs.asp.net/adweigert/archive/2007/12/08/c-my-first-extension-method.aspx</link><pubDate>Sat, 08 Dec 2007 15:01:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5422348</guid><dc:creator>adweigert</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/adweigert/rsscomments.aspx?PostID=5422348</wfw:commentRss><comments>http://weblogs.asp.net/adweigert/archive/2007/12/08/c-my-first-extension-method.aspx#comments</comments><description>&lt;P&gt;I will find many, many uses for this ... maybe someone else will too! &lt;/P&gt;
&lt;P style="FONT-FAMILY: Lucida Console; Courier: "&gt;&lt;FONT color=#0000ff&gt;using&lt;/FONT&gt; System;&lt;BR&gt;&lt;FONT color=#0000ff&gt;using&lt;/FONT&gt; System.Diagnostics;&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#0000ff&gt;internal&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;class&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;StringExtensions&lt;/FONT&gt;&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; T ToEnum&amp;lt;T&amp;gt;(&lt;FONT color=#0000ff&gt;this&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; value)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;where&lt;/FONT&gt; T : &lt;FONT color=#0000ff&gt;struct&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#2b91af&gt;Debug&lt;/FONT&gt;.Assert(!&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt;.IsNullOrEmpty(value));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;return&lt;/FONT&gt; (T)&lt;FONT color=#2b91af&gt;Enum&lt;/FONT&gt;.Parse(&lt;FONT color=#0000ff&gt;typeof&lt;/FONT&gt;(T), value, &lt;FONT color=#0000ff&gt;true&lt;/FONT&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5422348" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/adweigert/archive/tags/c_2300_/default.aspx">c#</category><category domain="http://weblogs.asp.net/adweigert/archive/tags/.net/default.aspx">.net</category><category domain="http://weblogs.asp.net/adweigert/archive/tags/Orcas/default.aspx">Orcas</category></item></channel></rss>