<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>.NET Tip of The Day.org</title>
    <description>Learn one new .NET trick every day</description>
    <link>http://dotnettipoftheday.org/</link>
    <lastBuildDate>Sat, 10 May 2008 16:15:19 GMT</lastBuildDate>
    <docs>http://backend.userland.com/rss</docs>
    <generator>RSS.NET: http://www.rssdotnet.com/</generator>
    <item>
      <title>Send an e-mail any time an unhandled exception occurs</title>
      <description>&lt;p&gt;Consider using built-in &lt;a href="http://msdn.microsoft.com/en-us/library/ms178703.aspx"&gt;ASP.NET health monitoring&lt;/a&gt; to monitor your website. Especially if you are not monitoring it at all yet.&amp;nbsp;ASP.NET health monitoring contains ready-to-use &lt;a href="http://msdn.microsoft.com/en-us/library/ms178703.aspx#web_events"&gt;Web health-monitoring events&lt;/a&gt; classes (Web events) and health-monitoring providers (listeners). For example, you can easily configure it to&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms227553.aspx"&gt;send an email any time an error is detected&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=send-an-e-mail-any-time-an-unhandled-exception-occurs"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=send-an-e-mail-any-time-an-unhandled-exception-occurs" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=otusMh"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=otusMh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=T5LXJH"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=T5LXJH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=IAlC7h"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=IAlC7h" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=4maWFh"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=4maWFh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=cHc2dH"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=cHc2dH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=aXVrah"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=aXVrah" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/287414746" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/send-an-e-mail-any-time-an-unhandled-exception-occurs.aspx</guid>
      <pubDate>Sat, 10 May 2008 14:06:58 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=send-an-e-mail-any-time-an-unhandled-exception-occurs</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/287414746/send-an-e-mail-any-time-an-unhandled-exception-occurs.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/send-an-e-mail-any-time-an-unhandled-exception-occurs.aspx</feedburner:origLink></item>
    <item>
      <title>News: .NET Tips &amp;amp; Tricks Community RSS</title>
      <description>&lt;p&gt;Those who prefer reading this site through RSS now can also &lt;a href="http://feeds.dotnettipoftheday.org/netTipsTricksCommunity"&gt;subscribe&lt;/a&gt; for updates to .NET Tips &amp; Tricks Community.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=POesdh"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=POesdh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=Ot8BcH"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=Ot8BcH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=yGnfBh"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=yGnfBh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=mxk8Gh"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=mxk8Gh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=qXjfcH"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=qXjfcH" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/287471825" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/news.aspx#2008-05-10</guid>
      <pubDate>Sat, 10 May 2008 15:57:00 GMT</pubDate>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/287471825/news.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/news.aspx#2008-05-10</feedburner:origLink></item>
    <item>
      <title>News: Why does new tips appear on this site so infrequently?</title>
      <description>&lt;p&gt;Hi guys. I know some of you are not satisfied with the frequency new tips appear on this site. The last comment I received was a proposal to rename the site to .NET Tip of The Month :) But I don't want to do this because I'm going to fix this problem. I'm working on the &lt;a href="http://dotnettipoftheday.org/community/"&gt;.NET Tips &amp; Tricks Community&lt;/a&gt; section now. My tips that are too small to hit the front page were added to this section. It's the place where all of you can share your .NET tips and tricks.&lt;/p&gt;&lt;p&gt;It's clear that this section lacks for some features. And if anyone out of 2510 subscribers has a proposal, just drop me a line. My email is &lt;a href="mailto:kostya.ly@gmail.com"&gt;kostya.ly@gmail.com&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Thanks for you patience.&lt;br /&gt;Kostya Ly&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=7ilPPh"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=7ilPPh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=oT1Y3H"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=oT1Y3H" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=XZA1Rh"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=XZA1Rh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=LG2Trh"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=LG2Trh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=b3UCyH"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=b3UCyH" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/285630067" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/news.aspx#2008-05-08</guid>
      <pubDate>Thu, 08 May 2008 00:48:00 GMT</pubDate>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/285630067/news.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/news.aspx#2008-05-08</feedburner:origLink></item>
    <item>
      <title>Turn off Session State if you're not using it</title>
      <description>&lt;p&gt;Since&amp;nbsp;ASP.NET Session State&amp;nbsp;is on by default, you pay the cost in memory even if you don't use it. If you're not using Session State, turn it off and save yourself the overhead. There are serveral ways to do this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;If you're not using Session State at all, turn it off completely&amp;nbsp;via&amp;nbsp;web.config file:&lt;br /&gt;&lt;br /&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white; text-align:left;"&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;system.web&lt;/span&gt;&amp;gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;sessionState&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;mode&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;=&lt;/span&gt;"&lt;span style="color: #0000ff;"&gt;Off&lt;/span&gt;"&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;sessionState&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/p&gt;
&lt;/div&gt;
&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;If&amp;nbsp;you're using Session State, but&amp;nbsp;it's required&amp;nbsp;only&amp;nbsp;for&amp;nbsp;a few pages, then first&amp;nbsp;turn it off for all pages:&lt;br /&gt;&lt;br /&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white; text-align:left;"&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;system.web&lt;/span&gt;&amp;gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;pages&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;enableSessionState&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;=&lt;/span&gt;"&lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;"&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/p&gt;
&lt;/div&gt;
&lt;br /&gt;then&amp;nbsp;enable it for&amp;nbsp;a specific page:&lt;br /&gt;&lt;br /&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white; text-align:left;"&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="background-color:yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@ &lt;/span&gt;&lt;span style="color: #a31515;"&gt;Page&lt;/span&gt; ... &lt;span style="color: #ff0000;"&gt;EnableSessionState&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="true"&lt;/span&gt; &lt;span style="background-color:yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;P.S. obviously&amp;nbsp;such&amp;nbsp;optimization makes sense only for high-traffic web sites.&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=page-enabledsessionstate"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=page-enabledsessionstate" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=pbLVnh"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=pbLVnh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=UvNjbH"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=UvNjbH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=yT0ath"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=yT0ath" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=aOow9h"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=aOow9h" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=Tjyw1H"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=Tjyw1H" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=V0tXph"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=V0tXph" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/281675165" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/page-enabledsessionstate.aspx</guid>
      <pubDate>Thu, 01 May 2008 23:51:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=page-enabledsessionstate</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/281675165/page-enabledsessionstate.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/page-enabledsessionstate.aspx</feedburner:origLink></item>
    <item>
      <title>How to debug Windows Service startup</title>
      <description>&lt;p&gt;Actually you can use this trick every time when:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You want to debug a process startup.&lt;/li&gt;
&lt;li&gt;You can't run&amp;nbsp;the process&amp;nbsp;by hitting F5 in Visual Studio (for example,&amp;nbsp;Windows Service).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So the problem is that you can't simply attach the Visual Studio debugger to the process as there isn't one to attach to until after you&amp;nbsp;start the process. However, once you start the process&amp;nbsp;if you have a bug such as an exception in the process's initialization you won't get the debugger attached to the process before it's too late.&lt;/p&gt;
&lt;p&gt;Calling&amp;nbsp;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.diagnostics.debugger.launch.aspx"&gt;Debugger.Launch()&lt;/a&gt; or &lt;a href="http://msdn2.microsoft.com/en-us/library/system.diagnostics.debugger.break.aspx"&gt;Debugger.Break()&lt;/a&gt; in your code allow you to debug such&amp;nbsp;problems. This&amp;nbsp;methods pop up the following screen asking you which instance of the debugger it should use to&amp;nbsp;debug the application.&lt;/p&gt;
&lt;div style="text-align:center"&gt;&lt;img src="http://dotnettipoftheday.org/resources/jit-debugger.png" alt="JIT Debugger" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=how-to-debug-windows-service-startup"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=how-to-debug-windows-service-startup" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=g7X7ZGg"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=g7X7ZGg" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=1zS1khG"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=1zS1khG" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=cJvovqg"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=cJvovqg" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=CJ6WfNg"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=CJ6WfNg" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=iKdWSAG"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=iKdWSAG" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=KCaTTgg"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=KCaTTgg" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/271629767" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/how-to-debug-windows-service-startup.aspx</guid>
      <pubDate>Wed, 16 Apr 2008 22:05:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=how-to-debug-windows-service-startup</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/271629767/how-to-debug-windows-service-startup.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/how-to-debug-windows-service-startup.aspx</feedburner:origLink></item>
    <item>
      <title>How to change HTML markup produced by ASP.NET controls</title>
      <description>&lt;p&gt;There are at least two ways of changing HTML markup produced by standard&amp;nbsp;ASP.NET controls. The most obvious&amp;nbsp;one is to derive a new class based on an existing ASP.NET control class and override the necessary rendering methods.&lt;/p&gt;
&lt;p&gt;Another option that is worth considering is to write a small&amp;nbsp;&lt;a href="http://msdn2.microsoft.com/en-us/library/67276kc5.aspx"&gt;control adapter&lt;/a&gt; for&amp;nbsp;the existing ASP.NET control. This&amp;nbsp;is a&amp;nbsp;little chunk of logic that you add to your web site to effectively "adapt" an ASP.NET control to render the HTML you prefer. This approach&amp;nbsp;has&amp;nbsp;the following two major&amp;nbsp;advantages over custom controls:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You&amp;nbsp;don't need to add the &lt;strong&gt;@Register&lt;/strong&gt; directives to your pages.&lt;/li&gt;
&lt;li&gt;The ASP.NET framework comes with a built-in means to apply the adapters to just certain browsers. When you build entirely new custom controls you have to write your own logic to handle browser detection to vary the response.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For example you can use &lt;a href="http://www.asp.net/cssadapters/"&gt;ASP.NET 2.0 CSS Friendly Control Adapters&lt;/a&gt; package to generate CSS friendly markup from some of the more commonly used ASP.NET controls.&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=how-to-change-aspnet-controls-markup"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=how-to-change-aspnet-controls-markup" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=OIla1Cg"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=OIla1Cg" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=SEvyZPG"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=SEvyZPG" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=oUD88cg"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=oUD88cg" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=eoZBPLg"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=eoZBPLg" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=f5tYXIG"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=f5tYXIG" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=lP8m02g"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=lP8m02g" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/266926203" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/how-to-change-aspnet-controls-markup.aspx</guid>
      <pubDate>Wed, 09 Apr 2008 13:07:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=how-to-change-aspnet-controls-markup</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/266926203/how-to-change-aspnet-controls-markup.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/how-to-change-aspnet-controls-markup.aspx</feedburner:origLink></item>
    <item>
      <title>Label to a form input field</title>
      <description>&lt;p&gt;If you set a label to a form element set the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.label.associatedcontrolid.aspx"&gt;AssociatedControlID&lt;/a&gt; property. This will force the label to render as &amp;lt;label&amp;gt; rather than &amp;lt;span&amp;gt;. A benefit of using the &lt;strong&gt;AssociatedControlID&lt;/strong&gt; property is that clicking a label when this property is set automatically changes the form focus to the associated form input.&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=label-to-a-form-input-field"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=label-to-a-form-input-field" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=PfELgUg"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=PfELgUg" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=b3SUYsG"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=b3SUYsG" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=4O4Hbxg"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=4O4Hbxg" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=Tmroy1g"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=Tmroy1g" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=akVqFMG"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=akVqFMG" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=8fH5mxg"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=8fH5mxg" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/262191028" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/label-to-a-form-input-field.aspx</guid>
      <pubDate>Tue, 01 Apr 2008 23:15:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=label-to-a-form-input-field</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/262191028/label-to-a-form-input-field.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/label-to-a-form-input-field.aspx</feedburner:origLink></item>
    <item>
      <title>News: .NET Tips &amp;amp; Tricks Community (ALPHA)</title>
      <description>&lt;p&gt;Some of you have used "Add a tip" function and submitted one or more tips. Some of these tips are pretty interesting and I publish them on this site. But for someone other submitted tips could be interesting as well. So, from now on, everybody can check out all tips submitted by the visitors of the site in a new section - &lt;a href="http://dotnettipoftheday.org/SuggestedTips.aspx"&gt;.NET Tips &amp; Tricks Community (ALPHA)&lt;/a&gt;. In fact this is not a real community yet (that's why you can see ALPHA in it's name). I'll add some common features soon. Let's see how it goes.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=u45jAnf"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=u45jAnf" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=7t8tR0F"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=7t8tR0F" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=bPH431f"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=bPH431f" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=a5VwZzf"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=a5VwZzf" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=WOscDTF"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=WOscDTF" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/256675841" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/news.aspx#2008-03-24</guid>
      <pubDate>Mon, 24 Mar 2008 00:16:00 GMT</pubDate>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/256675841/news.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/news.aspx#2008-03-24</feedburner:origLink></item>
    <item>
      <title>Add Windows Explorer to your Visual Studio tools menu</title>
      <description>&lt;p&gt;I often need to open Windows Explorer and browse to the current file, folder, or project that I am working on in Visual Studio.&amp;nbsp;This tip allows you to achieve this by clicking "Windows Explorer" in the Tools menu, and is one of the most simple-yet-useful tips I know of.&lt;/p&gt;
&lt;p&gt;To set it up, click &lt;strong&gt;Tools&lt;/strong&gt;, then &lt;strong&gt;External Tools...&lt;/strong&gt;, then click &lt;strong&gt;Add&lt;/strong&gt;.&amp;nbsp; Now enter the following data:&lt;br /&gt;Title: Windows Explorer&lt;br /&gt;Command: explorer.exe&lt;br /&gt;Arguments: /select,"$(ItemPath)"&lt;/p&gt;
&lt;p&gt;Leave &lt;strong&gt;Initial directoy&lt;/strong&gt; blank, and click &lt;strong&gt;OK&lt;/strong&gt;.&amp;nbsp; Now when you click &lt;strong&gt;Tools&lt;/strong&gt;, &lt;strong&gt;Windows Explorer&lt;/strong&gt;, Windows Explorer will open with the current file you are editing selected.&lt;/p&gt;
&lt;p style="margin-top:20px; font-style:italic;"&gt;submitted by &lt;a href="http://www.picwa.com"&gt;Daniel Flower&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=explorer-in-tools-menu"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=explorer-in-tools-menu" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=2jN1Rif"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=2jN1Rif" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=vkpjMoF"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=vkpjMoF" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=pMlWKjf"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=pMlWKjf" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=hTy3zQf"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=hTy3zQf" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=hKEt0lF"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=hKEt0lF" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=M5Zp5Ff"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=M5Zp5Ff" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/253087495" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/explorer-in-tools-menu.aspx</guid>
      <pubDate>Mon, 17 Mar 2008 18:15:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=explorer-in-tools-menu</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/253087495/explorer-in-tools-menu.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/explorer-in-tools-menu.aspx</feedburner:origLink></item>
    <item>
      <title>Correct event invocation</title>
      <description>&lt;p&gt;Be aware that if&amp;nbsp;there are no subscribers&amp;nbsp;a .NET&amp;nbsp;event will be null. Therefore when raising the event from C#&amp;nbsp;test it for null first.&lt;/p&gt;
&lt;div style="font-size: 10pt; background: white; color: black; font-family: Courier New;"&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;event&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;EventHandler&lt;/span&gt; SelectedNodeChanged;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; OnSelectedNodeChanged(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//Event will be null if there are no subscribers&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (SelectedNodeChanged != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SelectedNodeChanged(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;, e);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;However in multithreaded application the last subscriber can unsubscribe immediately after the null check and before the event is raised. To avoid a&amp;nbsp;null reference exception make a temporary copy of the event.&lt;/p&gt;
&lt;div style="font-size: 10pt; background: white; color: black; font-family: Courier New;"&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;event&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;EventHandler&lt;/span&gt; SelectedNodeChanged;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; OnSelectedNodeChanged(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//Make a temporary copy of the event to avoid possibility of&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//a race condition if the last subscriber unsubscribes&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//immediately after the null check and before the event is raised.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;EventHandler&lt;/span&gt; handler = SelectedNodeChanged;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//Event will be null if there are no subscribers&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (handler != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; handler(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;, e);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;/div&gt;
&lt;p style="margin-top:20px; font-style:italic"&gt;submitted by &lt;a href="http://www.godevs.com"&gt;Sergey P.&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=correct-event-invocation"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=correct-event-invocation" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=k1eb7Of"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=k1eb7Of" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=1gTenEF"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=1gTenEF" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=M2JZJ5f"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=M2JZJ5f" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=z0Lp3tf"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=z0Lp3tf" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=kB9OD1F"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=kB9OD1F" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=TWmoPCf"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=TWmoPCf" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/243931155" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/correct-event-invocation.aspx</guid>
      <pubDate>Sat, 01 Mar 2008 18:18:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=correct-event-invocation</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/243931155/correct-event-invocation.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/correct-event-invocation.aspx</feedburner:origLink></item>
    <item>
      <title>How to view code that is covered by the IntelliSense pop-up</title>
      <description>&lt;p&gt;When working in Visual Studio 2008 and the&amp;nbsp;IntelliSense pop-up is visible, but you would like to view&amp;nbsp;the code that is covered by it, press and hold the &lt;strong&gt;Ctrl&lt;/strong&gt; key, and the pop-up becomes transparent so that you can view the code that is below the pop-up.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://dotnettipoftheday.org/resources/intellisense-opacity.png" alt="" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=intellisense-opacity"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=intellisense-opacity" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=uoqT7Ne"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=uoqT7Ne" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=1M2BdQE"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=1M2BdQE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=BXKiwse"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=BXKiwse" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=PtCNhUe"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=PtCNhUe" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=BEZ2jdE"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=BEZ2jdE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=H9hDdue"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=H9hDdue" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/239336882" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/intellisense-opacity.aspx</guid>
      <pubDate>Fri, 22 Feb 2008 12:56:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=intellisense-opacity</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/239336882/intellisense-opacity.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/intellisense-opacity.aspx</feedburner:origLink></item>
    <item>
      <title>When returning DataReader from a function, specify CommandBehavior.CloseConnection</title>
      <description>&lt;p&gt;When you create an ADO.NET &lt;strong&gt;DataReader&lt;/strong&gt; object, specify the &lt;strong&gt;CommandBehavior.CloseConnection&lt;/strong&gt; enumeration in your call to &lt;strong&gt;ExecuteReader&lt;/strong&gt;. This ensures that when you close the &lt;strong&gt;DataReader&lt;/strong&gt;, the SQL connection is also closed. This is especially helpful when you return a &lt;strong&gt;DataReader&lt;/strong&gt; from a function, and you do not have control over the calling code. If the caller forgets to close the connection but closes the reader, both are closed when the &lt;strong&gt;DataReader&lt;/strong&gt; is created by using &lt;strong&gt;CommandBehavior.CloseConnection&lt;/strong&gt;. This is shown in the following code fragment.&lt;/p&gt;

&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;SqlDataReader&lt;/span&gt; CustomerRead(&lt;span style="color: blue;"&gt;int&lt;/span&gt; CustomerID)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//... create connection and command, open connection&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; myCommand.ExecuteReader(&lt;span style="color: #2b91af;"&gt;CommandBehavior&lt;/span&gt;.CloseConnection);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//... client code&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;SqlDataReader&lt;/span&gt; myReader = CustomerRead(10248);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//... read some data&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; myReader.Close(); &lt;span style="color: green;"&gt;// reader and connection are closed&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=datareader-closeconnection"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=datareader-closeconnection" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=yVZFrOe"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=yVZFrOe" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=8h2yNLE"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=8h2yNLE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=ziu93me"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=ziu93me" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=8LdwbFe"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=8LdwbFe" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=PWtzgZE"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=PWtzgZE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=qJdgJ9e"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=qJdgJ9e" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/236063055" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/datareader-closeconnection.aspx</guid>
      <pubDate>Sat, 16 Feb 2008 15:30:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=datareader-closeconnection</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/236063055/datareader-closeconnection.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/datareader-closeconnection.aspx</feedburner:origLink></item>
    <item>
      <title>Use explicit casting instead of DataBinder.Eval</title>
      <description>&lt;p&gt;The &lt;a href="http://msdn2.microsoft.com/en-us/library/4hx47hfe.aspx"&gt;DataBinder.Eval&lt;/a&gt; method uses .NET reflection to evaluate the arguments that are passed in and to return the results. Consider limiting the use of DataBinder.Eval during data binding operations in order to improve ASP.NET page performance.&lt;/p&gt;
&lt;p&gt;Consider the following ItemTemplate element within a Repeater control using DataBinder.Eval:&lt;/p&gt;

&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background-color:yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color:blue"&gt;#&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DataBinder&lt;/span&gt;.Eval(Container.DataItem, &lt;span style="color:#a31515;"&gt;"field1"&lt;/span&gt;) &lt;span style="background-color:yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background-color:yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color:blue"&gt;#&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DataBinder&lt;/span&gt;.Eval(Container.DataItem, &lt;span style="color:#a31515;"&gt;"field2"&lt;/span&gt;) &lt;span style="background-color:yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;Using explicit casting offers better performance by avoiding the cost of .NET reflection. Cast the Container.DataItem as a DataRowView:&lt;/p&gt;

&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background-color:yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color:blue"&gt;#&lt;/span&gt; ((&lt;span style="color:#2b91af;"&gt;DataRowView&lt;/span&gt;)Container.DataItem)[&lt;span style="color:#a31515;"&gt;"field1"&lt;/span&gt;] &lt;span style="background-color:yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background-color:yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color:blue"&gt;#&lt;/span&gt; ((&lt;span style="color:#2b91af;"&gt;DataRowView&lt;/span&gt;)Container.DataItem)[&lt;span style="color:#a31515;"&gt;"field2"&lt;/span&gt;] &lt;span style="background-color:yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=use-explicit-casting-instead-of-databinder.eval"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=use-explicit-casting-instead-of-databinder.eval" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=oXywP3e"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=oXywP3e" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=4v8IGPE"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=4v8IGPE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=bmLJeKe"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=bmLJeKe" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=ZJF3rme"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=ZJF3rme" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=mZrwuBE"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=mZrwuBE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=YeZg6ye"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=YeZg6ye" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/233931171" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/use-explicit-casting-instead-of-databinder.eval.aspx</guid>
      <pubDate>Tue, 12 Feb 2008 21:42:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=use-explicit-casting-instead-of-databinder.eval</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/233931171/use-explicit-casting-instead-of-databinder.eval.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/use-explicit-casting-instead-of-databinder.eval.aspx</feedburner:origLink></item>
    <item>
      <title>Consider using weak references for your custom caching solutions</title>
      <description>&lt;p&gt;Consider using &lt;a href="http://msdn2.microsoft.com/en-us/library/system.weakreference.aspx"&gt;weak references&lt;/a&gt; when you implement a custom caching solution, so that cached objects can be released by garbage collection when there is memory pressure. You should use weak references mostly for objects that are not small in size because the weak referencing itself involves some overhead. They are suitable for medium to large-sized objects stored in a collection.&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=weak-reference"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=weak-reference" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=lG9v9ce"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=lG9v9ce" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=g443QdE"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=g443QdE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=jTkkpme"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=jTkkpme" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=cVeuANe"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=cVeuANe" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=bAsvD9E"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=bAsvD9E" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=03NCtSe"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=03NCtSe" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/230494754" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/weak-reference.aspx</guid>
      <pubDate>Wed, 06 Feb 2008 21:51:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=weak-reference</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/230494754/weak-reference.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/weak-reference.aspx</feedburner:origLink></item>
    <item>
      <title>Automatically insert attribute value quotes</title>
      <description>&lt;p&gt;Visual Studio HTML/ASPX editor can save you some time if you enable option &lt;strong&gt;Tools | Options... | Text Editor | HTML | Format | Insert attribute value quotes when typing&lt;/strong&gt;. When this option is enabled, once you type a name of an attribute and following "=" symbol, Visual Studio automatically inserts a pair of quotes and invokes IntelliSense menu. After that you need only to select an attribute value from the menu and hit the Enter button. It's another nice timesaver.&lt;/p&gt;
&lt;img src="http://bdv.bidvertiser.com/bidvertiser/images/rss/pixel.gif?bdv_ver_code=BDV-664839-BDV" style="width:1px; height:1px" alt="" /&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=automatic-attribute-quotes-visual-studio"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=automatic-attribute-quotes-visual-studio" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=kt0osxe"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=kt0osxe" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=Dk2qQ1E"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=Dk2qQ1E" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=7Wm1gSe"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=7Wm1gSe" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=EL8LJce"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=EL8LJce" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=Zwq6H9E"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=Zwq6H9E" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=ny5E6Ke"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=ny5E6Ke" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/229062642" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/automatic-attribute-quotes-visual-studio.aspx</guid>
      <pubDate>Mon, 04 Feb 2008 20:50:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=automatic-attribute-quotes-visual-studio</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/229062642/automatic-attribute-quotes-visual-studio.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/automatic-attribute-quotes-visual-studio.aspx</feedburner:origLink></item>
    <item>
      <title>Correct using of ASP.NET Cache</title>
      <description>&lt;p&gt;Often in ASP.NET application we see a code which looks like this one:&lt;/p&gt;

&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (Cache[&lt;span style="color: #a31515;"&gt;"SomeData"&lt;/span&gt;] != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; name = ((&lt;span style="color: #2b91af;"&gt;SomeClass&lt;/span&gt;)Cache[&lt;span style="color: #a31515;"&gt;"SomeData"&lt;/span&gt;]).Name;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//.....&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;This code is not safe enough and the second statement can generate a NullReferenceException sometimes. There is no guaranttee that a cached object will stay in the cache between two calls. After the first call it can be deleted either by garbage collector or by another thread to refresh cached data.&lt;/p&gt;

&lt;p&gt;So to overcome this problem rewrite the code using &lt;a href="http://msdn2.microsoft.com/en-us/library/cscsdfbt(VS.80).aspx"&gt;as operator&lt;/a&gt;:&lt;/p&gt;

&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;SomeClass&lt;/span&gt; someClass = Cache[&lt;span style="color: #a31515;"&gt;"SomeData"&lt;/span&gt;] &lt;span style="color: blue;"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;SomeClass&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (someClass != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; name = someClass.Name;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//.....&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;/div&gt;

&lt;p style="margin-top:30px; font-style:italic"&gt;via &lt;a href="http://kpumuk.info/"&gt;Dmytro Shteflyuk&lt;/a&gt;&lt;p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=correct-using-of-aspnet-cache"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=correct-using-of-aspnet-cache" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=AttY4Vd"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=AttY4Vd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=mAvegjD"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=mAvegjD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=IRdpKSd"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=IRdpKSd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=ZLbXnzd"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=ZLbXnzd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=Orv9rbD"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=Orv9rbD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=sJEsc4d"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=sJEsc4d" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/225932528" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/correct-using-of-aspnet-cache.aspx</guid>
      <pubDate>Wed, 30 Jan 2008 16:20:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=correct-using-of-aspnet-cache</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/225932528/correct-using-of-aspnet-cache.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/correct-using-of-aspnet-cache.aspx</feedburner:origLink></item>
    <item>
      <title>Treat .NET Threads as a shared resource</title>
      <description>&lt;p&gt;Do not create .NET threads on a per-request basis because this can severely impact scalability. Creating new threads is also a fairly expensive operation that should be minimized. Treat threads as a shared resource and use the optimized &lt;a href="http://msdn2.microsoft.com/en-us/library/0ka9477y(VS.80).aspx"&gt;.NET thread pool&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=thread-pool"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=thread-pool" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=Uhr2qSd"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=Uhr2qSd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=NlEXgZD"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=NlEXgZD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=rJjIFud"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=rJjIFud" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=pt0cnid"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=pt0cnid" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=un6rRZD"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=un6rRZD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=y9bogqd"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=y9bogqd" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/220635059" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/thread-pool.aspx</guid>
      <pubDate>Tue, 22 Jan 2008 01:21:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=thread-pool</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/220635059/thread-pool.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/thread-pool.aspx</feedburner:origLink></item>
    <item>
      <title>How to create fully qualified URLs</title>
      <description>&lt;p&gt;With ASP.NET it's quite easy to get absolute path to a page by calling the VirtualPathUtility.ToAbsolute method. Getting absolute URL is not that obvious but still quite easy. Just combine request url with absolute path to your ASP.NET page:&lt;/p&gt;

&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt; absolutePath = &lt;span style="color: #2b91af;"&gt;VirtualPathUtility&lt;/span&gt;.ToAbsolute(&lt;span style="color: #a31515;"&gt;"http://dotnettipoftheday.org/test/MyWebForm.aspx"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;Uri&lt;/span&gt; newUri = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Uri&lt;/span&gt;(Request.Url, absolutePath);&lt;/p&gt;
&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=fully-qualified-urls"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=fully-qualified-urls" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=2MOQ9id"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=2MOQ9id" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=HD1SqwD"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=HD1SqwD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=3miKgId"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=3miKgId" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=r2hoYUd"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=r2hoYUd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=NRlvclD"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=NRlvclD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=3gVFBwd"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=3gVFBwd" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/218825342" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/fully-qualified-urls.aspx</guid>
      <pubDate>Fri, 18 Jan 2008 13:47:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=fully-qualified-urls</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/218825342/fully-qualified-urls.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/fully-qualified-urls.aspx</feedburner:origLink></item>
    <item>
      <title>COALESCE function instead of long CASE WHEN ... ELSE (T-SQL)</title>
      <description>&lt;p&gt;Instead of using long "SELECT ... &lt;a href="http://msdn2.microsoft.com/en-us/library/ms181765.aspx"&gt;CASE WHEN ... ELSE&lt;/a&gt; ..." construction, you can use the &lt;a href="http://msdn2.microsoft.com/en-us/library/ms190349.aspx"&gt;COALESCE&lt;/a&gt; function when you need to find a value that is not NULL. Lets review the following T-SQL expression, in which we need to select an available "source":&lt;/p&gt;

&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
	&lt;p style="margin: 0px;"&gt;&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; TheSource &lt;span style="color:gray"&gt;=&lt;/span&gt;&lt;/p&gt;
	&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;CASE&lt;/span&gt;&lt;/p&gt;
	&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;WHEN&lt;/span&gt; localSource &lt;span style="color:gray"&gt;IS NOT NULL&lt;/span&gt; &lt;span style="color:blue"&gt;THEN&lt;/span&gt; localSource&lt;/p&gt;
	&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;WHEN&lt;/span&gt; intranetSource &lt;span style="color:gray"&gt;IS NOT NULL&lt;/span&gt; &lt;span style="color:blue"&gt;THEN&lt;/span&gt; intranetSource&lt;/p&gt;
	&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;WHEN&lt;/span&gt; internetSource &lt;span style="color:gray"&gt;IS NOT NULL&lt;/span&gt; &lt;span style="color:blue"&gt;THEN&lt;/span&gt; internetSource&lt;/p&gt;
	&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;ELSE&lt;/span&gt; &lt;span style="color:red"&gt;''&lt;/span&gt;&lt;/p&gt;
	&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue"&gt;END&lt;/span&gt;&lt;/p&gt;
	&lt;p style="margin: 0px;"&gt;&lt;span style="color:blue"&gt;FROM&lt;/span&gt; ...&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;Now lets rewrite the code above using COALESCE function:&lt;/p&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
	&lt;p style="margin: 0px;"&gt;&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; TheSource &lt;span style="color:gray"&gt;=&lt;/span&gt;&lt;/p&gt;
	&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:fuchsia"&gt;COALESCE&lt;/span&gt;&lt;span style="color:gray"&gt;(&lt;/span&gt;localSource&lt;span style="color:gray"&gt;,&lt;/span&gt; intranetSource&lt;span style="color:gray"&gt;,&lt;/span&gt; internetSource&lt;span style="color:gray"&gt;,&lt;/span&gt; &lt;span style="color:red"&gt;''&lt;/span&gt;&lt;span style="color:gray"&gt;)&lt;/span&gt;&lt;/p&gt;
	&lt;p style="margin: 0px;"&gt;&lt;span style="color:blue;"&gt;FROM&lt;/span&gt; ...&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;The tip applies to MS SQL Server 2000/2005.&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=sql-coalesce"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=sql-coalesce" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=AiY858d"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=AiY858d" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=pAnUDDD"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=pAnUDDD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=WLm5v3d"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=WLm5v3d" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=9GKiXnd"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=9GKiXnd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=Q391pVD"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=Q391pVD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=buXCB8d"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=buXCB8d" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/217215031" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/sql-coalesce.aspx</guid>
      <pubDate>Tue, 15 Jan 2008 22:00:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=sql-coalesce</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/217215031/sql-coalesce.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/sql-coalesce.aspx</feedburner:origLink></item>
    <item>
      <title>Cut a line into memory</title>
      <description>&lt;p&gt;While in Visual Studio.NET source code editor, press &lt;code style="color:Teal"&gt;Ctrl+L&lt;/code&gt; to cut a line of code into memory. This is an easy way to move lines around your pages, or delete a set of lines quickly. Simple, yet useful!&lt;/p&gt;

&lt;p style="font-style:italic;margin-top:20px;"&gt;submitted by Grant Merwitz, &lt;a href="http://www.thexboxlounge.co.za"&gt;The X-Box Lounge&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=cut-line-into-memory"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=cut-line-into-memory" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=THRDlXd"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=THRDlXd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=mcBcF6D"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=mcBcF6D" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=BYSx4Nd"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=BYSx4Nd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=O0F82qd"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=O0F82qd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=GDjFEED"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=GDjFEED" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=3Gwm1md"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=3Gwm1md" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/215944925" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/cut-line-into-memory.aspx</guid>
      <pubDate>Sun, 13 Jan 2008 12:13:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=cut-line-into-memory</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/215944925/cut-line-into-memory.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/cut-line-into-memory.aspx</feedburner:origLink></item>
    <item>
      <title>How to check email works without using SMTP</title>
      <description>&lt;p&gt;Testing code that sends email has always been a pain. You had to set up a SMTP service just to test that your .NET application sends the e-mail correctly.&lt;/p&gt;

&lt;p&gt;However, there is a way to send e-mails with no SMTP server set up. Just configure your .NET application to drop e-mails into a specified folder instead of sending them via SMTP server:&lt;/p&gt;

&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
	&lt;p style="margin: 0px;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;system.net&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
	&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;mailSettings&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
	&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;smtp&lt;/span&gt; &lt;span style="color:Red"&gt;deliveryMethod&lt;/span&gt;&lt;span style="color:Blue"&gt;="SpecifiedPickupDirectory"&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
	&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;specifiedPickupDirectory&lt;/span&gt; &lt;span style="color:Red"&gt;pickupDirectoryLocation&lt;/span&gt;&lt;span style="color:Blue"&gt;="c:\Test\"&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;
	&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;smtp&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
	&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;mailSettings&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
	&lt;p style="margin: 0px;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;system.net&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;This will instruct SmtpClient class to generate mail message, save it as .eml file and drop it into &lt;strong&gt;c:\Test\&lt;/strong&gt; folder.&lt;/p&gt;

&lt;!-- http://www.andornot.com/about/developerblog/2007/07/testing-websites-that-use-smtp-email-on.aspx

http://www.dotnetnuke.com/Default.aspx?tabid=825&amp;EntryID=1542

http://edinkapic.blogspot.com/2007/11/how-to-test-net-application-that-uses.html

SpecifiedPickupDirectory --&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=smtp-delivery-method-SpecifiedPickupDirectory"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=smtp-delivery-method-SpecifiedPickupDirectory" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=UlifbEd"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=UlifbEd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=JUbZ0YD"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=JUbZ0YD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=GAyTkfd"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=GAyTkfd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=72UIMxd"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=72UIMxd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=ypNgJkD"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=ypNgJkD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=ECHUtHd"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=ECHUtHd" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/213391862" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/smtp-delivery-method-SpecifiedPickupDirectory.aspx</guid>
      <pubDate>Tue, 08 Jan 2008 22:15:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=smtp-delivery-method-SpecifiedPickupDirectory</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/213391862/smtp-delivery-method-SpecifiedPickupDirectory.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/smtp-delivery-method-SpecifiedPickupDirectory.aspx</feedburner:origLink></item>
    <item>
      <title>A simple method to validate an integer, double, date, and currency values entered into a textbox on ASP.NET page</title>
      <description>&lt;p&gt;Normally the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.comparevalidator.aspx"&gt;CompareValidator&lt;/a&gt; is used to check one value against another on ASP.NET page. However it also can be used to ensure user has entered data in a correct format.&lt;/p&gt;

&lt;p&gt;Here's how it works:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Set the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.basevalidator.controltovalidate.aspx"&gt;ControlToValidate&lt;/a&gt; property to the ID of the TextBox.&lt;/li&gt;
&lt;li&gt;Set the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.comparevalidator.operator.aspx"&gt;Operator&lt;/a&gt; property to &lt;strong&gt;DataTypeCheck&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Assign a &lt;a href="http://msdn2.microsoft.com/en-us/library/85y3x2a2.aspx"&gt;ValidationDataType&lt;/a&gt; enumeration member to the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.basecomparevalidator.type.aspx"&gt;Type&lt;/a&gt; property, which includes &lt;strong&gt;String&lt;/strong&gt;, &lt;strong&gt;Integer&lt;/strong&gt;, &lt;strong&gt;Double&lt;/strong&gt;, &lt;strong&gt;Date&lt;/strong&gt;, and &lt;strong&gt;Currency&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p style="margin-top:30px"&gt;Note: this method is culturally sensitive. This means that if you change your browsers settings to en-UK, a date of 1-28-01 correctly fires the validator, while 28-1-01 is allowed through. This is because the date format is day-month-year in that region.&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=validate-format-of-integer-double-date-currency"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=validate-format-of-integer-double-date-currency" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=Uuepf8d"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=Uuepf8d" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=KLSNxpD"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=KLSNxpD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=XFRbnyd"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=XFRbnyd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=3BmjI9d"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=3BmjI9d" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=C8t5dPD"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=C8t5dPD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=mu0NMYd"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=mu0NMYd" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/211795014" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/validate-format-of-integer-double-date-currency.aspx</guid>
      <pubDate>Sat, 05 Jan 2008 23:59:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=validate-format-of-integer-double-date-currency</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/211795014/validate-format-of-integer-double-date-currency.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/validate-format-of-integer-double-date-currency.aspx</feedburner:origLink></item>
    <item>
      <title>What is the difference between UriBuilder.ToString and UriBuilder.Uri.ToString</title>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.uribuilder.tostring.aspx"&gt;UriBuilder.ToString&lt;/a&gt; - the resulting string always contains &lt;a href="http://msdn2.microsoft.com/en-us/library/system.uribuilder.port.aspx"&gt;Port&lt;/a&gt;, even if it is the default port for the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.uribuilder.scheme.aspx"&gt;Scheme&lt;/a&gt;. For example - http://localhost&lt;strong&gt;:80&lt;/strong&gt;/tips.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.uri.tostring.aspx"&gt;UriBuilder.Uri.ToString&lt;/a&gt; - the resulting string only contains the port if it is not the default port for the scheme. For example - http://localhost/tips.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Therefore, in most of the cases &lt;strong&gt;UriBuilder.Uri.ToString&lt;/strong&gt; should be used to omit redundant port specification.&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=UriBuilder.ToString-vs-UriBuilder.Uri.ToString"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=UriBuilder.ToString-vs-UriBuilder.Uri.ToString" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=UpLnQic"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=UpLnQic" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=SjPfaeC"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=SjPfaeC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=tu0eDbc"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=tu0eDbc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=ie70r5c"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=ie70r5c" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=N8S8D2C"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=N8S8D2C" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=qhYOsMc"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=qhYOsMc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/206703315" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/UriBuilder.ToString-vs-UriBuilder.Uri.ToString.aspx</guid>
      <pubDate>Wed, 26 Dec 2007 23:30:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=UriBuilder.ToString-vs-UriBuilder.Uri.ToString</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/206703315/UriBuilder.ToString-vs-UriBuilder.Uri.ToString.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/UriBuilder.ToString-vs-UriBuilder.Uri.ToString.aspx</feedburner:origLink></item>
    <item>
      <title>Visual Studio Bookmarks</title>
      <description>&lt;p&gt;Bookmarks can be used to mark places in the code, like the code that you might want to jump back and forward. Bookmarks can be related to task list shortcuts, kind of the same functinality.&lt;/p&gt;

&lt;p&gt;The bookmarks can be setup very easy, by pressing &lt;code style="color:Teal"&gt;Ctrl+K&lt;/code&gt;, &lt;code style="color:Teal"&gt;Ctrl+K&lt;/code&gt; to leave bookmark.&lt;/p&gt;

&lt;img src="http://dotnettipoftheday.org/resources/visual-studio-bookmarks.png" alt="Bookmarked line marked with an icon." /&gt;

&lt;p&gt;For navigation, you can press &lt;code style="color:Teal"&gt;Ctrl+K&lt;/code&gt;, &lt;code style="color:Teal"&gt;Ctrl+N&lt;/code&gt; to move to the next bookmark, or &lt;code style="color:Teal"&gt;Ctrl+K&lt;/code&gt;, &lt;code style="color:Teal"&gt;CTRL+P&lt;/code&gt; for the previous bookmark. It's easy, just try it now.&lt;/p&gt;
&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=bookmarks-in-visual-studio"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=bookmarks-in-visual-studio" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=3n9TEXc"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=3n9TEXc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=YY5BvGC"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=YY5BvGC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=tDYqd8c"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=tDYqd8c" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=fJv5Ixc"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=fJv5Ixc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=wpKYboC"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=wpKYboC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=xL9Bfwc"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=xL9Bfwc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/204086973" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/bookmarks-in-visual-studio.aspx</guid>
      <pubDate>Fri, 21 Dec 2007 17:01:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=bookmarks-in-visual-studio</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/204086973/bookmarks-in-visual-studio.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/bookmarks-in-visual-studio.aspx</feedburner:origLink></item>
    <item>
      <title>Generating compiler warnings for calls to an obsolete methods</title>
      <description>&lt;p&gt;Throughout the product development cycle, occasionally certain methods become obsolete. If you can't modify those methods, will need to write another implementation of the method using a slightly different name or signature. To maintain compatibility, you do not want to remove the old method and break your code. This is where the .NET &lt;a href="http://msdn2.microsoft.com/en-us/library/system.obsoleteattribute.aspx"&gt;Obsolete&lt;/a&gt; attribute comes in handy:&lt;/p&gt;

&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af;"&gt;Obsolete&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"Use the new LogRequestEx instead."&lt;/span&gt;)]&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; LogRequest(&lt;span style="color: blue;"&gt;string&lt;/span&gt; feedUrl, &lt;span style="color: blue;"&gt;string&lt;/span&gt; referer)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;Setting the Obsolete attribute as above makes a warning message appear in the Visual Studio's Error List stating that the particular call to a method is obsolete. The warning message also includes your personalized message that you pass as the attribute's argument (such as, "Use the new LogRequestEx instead").&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=ObsoleteAttribute"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=ObsoleteAttribute" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=UX4ffVc"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=UX4ffVc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=z4caGlC"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=z4caGlC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=ZbsOoOc"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=ZbsOoOc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=MiWh7Tc"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=MiWh7Tc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=VFU7N7C"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=VFU7N7C" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=9Wnk6mc"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=9Wnk6mc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/200529634" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/ObsoleteAttribute.aspx</guid>
      <pubDate>Sat, 15 Dec 2007 01:17:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=ObsoleteAttribute</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/200529634/ObsoleteAttribute.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/ObsoleteAttribute.aspx</feedburner:origLink></item>
    <item>
      <title>Big solutions can be organized using Solution Folders</title>
      <description>&lt;p&gt;Here is an example of a big Visual Studio.NET solution that contains numerous projects:&lt;/p&gt;
&lt;div style="text-align:center; width:100%;"&gt;&lt;img src="http://dotnettipoftheday.org/resources/visual-studio-solution-1.png" alt="Unorganized Visual Studio.NET solution" /&gt;&lt;/div&gt;

&lt;p&gt;Such a big Visual Studio.NET solutions can be organized by grouping related projects into folders. Just right-click on the solution node and choose &lt;strong&gt;Add | New Solution Folder&lt;/strong&gt; to add a Solution Folder. Then just Drag'n'Drop projects into this folder.&lt;/p&gt;

&lt;div style="text-align:center; width:100%;"&gt;&lt;img src="http://dotnettipoftheday.org/resources/visual-studio-solution-2.png" alt="Organized Visual Studio.NET solution" /&gt;&lt;/div&gt;

&lt;p&gt;This also will allow you to do some operations on a group of projects. For example, unload all projects in a Solution Folder, collapse or hide entire Solution Folder so that you can work easily in Solution Explorer in Visual Studio.NET.&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=visual-studio-solution-folders"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=visual-studio-solution-folders" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=vXGBttc"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=vXGBttc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=hm5YYsC"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=hm5YYsC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=ymstvac"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=ymstvac" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=8t9L3Ac"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=8t9L3Ac" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=OoDrEoC"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=OoDrEoC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=59H4kAc"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=59H4kAc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/196754734" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/visual-studio-solution-folders.aspx</guid>
      <pubDate>Fri, 07 Dec 2007 19:55:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=visual-studio-solution-folders</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/196754734/visual-studio-solution-folders.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/visual-studio-solution-folders.aspx</feedburner:origLink></item>
    <item>
      <title>How to change the default view for Web pages and WinForms in Visual Studio</title>
      <description>&lt;p&gt;By default Visual Studio.NET initially displays Web pages and WinForms in a Design view. But if you prefer Source view, you can set it to be the default view.&lt;/p&gt;
&lt;p&gt;For Web pages:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;Tools | Options... | HTML Designer&lt;/strong&gt; and select &lt;strong&gt;Source View&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt; button.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For WinForms:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Right-click on a WinForm in the Solution Explorer and then click &lt;strong&gt;Open With...&lt;/strong&gt;. &lt;strong&gt;Open With&lt;/strong&gt; dialog opens.&lt;/li&gt;
&lt;li&gt;Choose &lt;strong&gt;CSharp Editor&lt;/strong&gt; in the list and then click &lt;strong&gt;Set as Default&lt;/strong&gt; button.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt; button.&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=visual-studio-source-view"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=visual-studio-source-view" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=z2KceNc"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=z2KceNc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=MQNHcRC"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=MQNHcRC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=XyAMPwc"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=XyAMPwc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=2rHh7Tc"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=2rHh7Tc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=yU3CIsC"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=yU3CIsC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=1fw5QDc"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=1fw5QDc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/195565072" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/visual-studio-source-view.aspx</guid>
      <pubDate>Wed, 05 Dec 2007 17:20:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=visual-studio-source-view</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/195565072/visual-studio-source-view.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/visual-studio-source-view.aspx</feedburner:origLink></item>
    <item>
      <title>Use DebuggerBrowsable attribute to clean up class view in a debugger</title>
      <description>&lt;p&gt;The &lt;a href="http://msdn2.microsoft.com/en-us/library/system.diagnostics.debuggerbrowsableattribute.aspx"&gt;DebuggerBrowsable&lt;/a&gt; attribute determines if and how a field or property is displayed in the debugger variable windows. Let's review the following code example:&lt;/p&gt;

&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;VehicleSeries&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; _name;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; Name&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt; { &lt;span style="color: blue;"&gt;return&lt;/span&gt; _name; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;set&lt;/span&gt; { _name = &lt;span style="color: blue;"&gt;value&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; _vehicles = &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;string&lt;/span&gt;&amp;gt;();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &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;string&lt;/span&gt;&amp;gt; Vehicles&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt; { &lt;span style="color: blue;"&gt;return&lt;/span&gt; _vehicles; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;set&lt;/span&gt; { _vehicles = &lt;span style="color: blue;"&gt;value&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;The resulting display within the debugger is shown below:&lt;/p&gt;

&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;img src="http://dotnettipoftheday.org/resources/DebuggerBrowsableAttribute1.png" alt="DataTip 1" /&gt;
&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;Now lets remove duplicate information and show constituent vehicles by adding a few DebuggerBrowsable attributes:&lt;/p&gt;

&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;VehicleSeries&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af;"&gt;DebuggerBrowsable&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;DebuggerBrowsableState&lt;/span&gt;.Never)]&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; _name;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; Name&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt; { &lt;span style="color: blue;"&gt;return&lt;/span&gt; _name; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;set&lt;/span&gt; { _name = &lt;span style="color: blue;"&gt;value&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af;"&gt;DebuggerBrowsable&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;DebuggerBrowsableState&lt;/span&gt;.Never)]&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; _vehicles = &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;string&lt;/span&gt;&amp;gt;();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af;"&gt;DebuggerBrowsable&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;DebuggerBrowsableState&lt;/span&gt;.RootHidden)]&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &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;string&lt;/span&gt;&amp;gt; Vehicles&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt; { &lt;span style="color: blue;"&gt;return&lt;/span&gt; _vehicles; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;set&lt;/span&gt; { _vehicles = &lt;span style="color: blue;"&gt;value&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;/div&gt;


&lt;p&gt;This results in the following view in the debugger:&lt;/p&gt;

&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;img src="http://dotnettipoftheday.org/resources/DebuggerBrowsableAttribute2.png" alt="DataTip 2" /&gt;
&lt;/p&gt;
&lt;/div&gt;

&lt;p style="margin-top:30px"&gt;P.S. Also take a look at a tip "&lt;a href="http://dotnettipoftheday.org/tips/debuggerdisplay_attribute.aspx"&gt;Use DebuggerDisplay attribute for a better debugger experience&lt;/a&gt;".&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=DebuggerBrowsableAttribute"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=DebuggerBrowsableAttribute" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=UzYgTRc"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=UzYgTRc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=yolcZoC"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=yolcZoC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=u0hsqWc"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=u0hsqWc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=5b2n3Kc"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=5b2n3Kc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=EuK1ydC"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=EuK1ydC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=acIzpfc"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=acIzpfc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/194045911" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/DebuggerBrowsableAttribute.aspx</guid>
      <pubDate>Sun, 02 Dec 2007 23:11:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=DebuggerBrowsableAttribute</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/194045911/DebuggerBrowsableAttribute.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/DebuggerBrowsableAttribute.aspx</feedburner:origLink></item>
    <item>
      <title>What is the difference between URL and URI?</title>
      <description>&lt;p&gt;A URL is the address of some resource on the web, which means that normally you type the address into a browser and you get something back. There are other type of resources than web pages, but that's the easiest conceptually. The browser goes out somewhere on the internet and accesses something.&lt;/p&gt;

&lt;p&gt;A URI is just a unique string that uniquely identifies something, commonly a namespace. Sometimes they look like a URL that you could type into the address bar of your web browser, but it doesn't have to point to any physical resource on the web.&lt;/p&gt;

&lt;p&gt;URI is the more generic term, and a URL is a particular type of URI in that a URL has to uniquely identify some resource on the web.&lt;/p&gt;
&lt;p style="font-style:italic"&gt;&lt;br /&gt;via &lt;a href="http://www.fedia.net/"&gt;Fedia.net&lt;/a&gt;
&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=url-vs-uri"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=url-vs-uri" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=hve6BIb"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=hve6BIb" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=IZsu4ZB"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=IZsu4ZB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=Db9p8wb"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=Db9p8wb" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=imn30Eb"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=imn30Eb" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=e11APSB"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=e11APSB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=v512d5b"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=v512d5b" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/189492305" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/url-vs-uri.aspx</guid>
      <pubDate>Fri, 23 Nov 2007 21:46:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=url-vs-uri</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/189492305/url-vs-uri.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/url-vs-uri.aspx</feedburner:origLink></item>
    <item>
      <title>Don't generate unnecessary WinForm members for Label controls</title>
      <description>&lt;p&gt;To get rid of some auto-generated form level fields that point to a control that will never be referenced (for example, labels, panels, etc.), do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the Windows Forms Designer, select a control.&lt;/li&gt;
&lt;li&gt;Set &lt;a href="http://msdn2.microsoft.com/en-us/library/ms233630.aspx"&gt;GenerateMember&lt;/a&gt; property for this control to &lt;strong&gt;false&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As a result a member of the form will not be generated for this control. It saves you 4 bytes per member and more importantly removes "clutter" from IntelliSense and any diagrams you autogenerate.&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=GenerateMember"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=GenerateMember" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=PsgmLab"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=PsgmLab" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=0DZyASB"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=0DZyASB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=kxcQJLb"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=kxcQJLb" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=FsZQQFb"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=FsZQQFb" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=zrcf4zB"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=zrcf4zB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=EB1WMLb"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=EB1WMLb" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/188423477" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/GenerateMember.aspx</guid>
      <pubDate>Wed, 21 Nov 2007 20:54:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=GenerateMember</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/188423477/GenerateMember.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/GenerateMember.aspx</feedburner:origLink></item>
    <item>
      <title>Simplify the usability of your generic methods with type parameter inference</title>
      <description>&lt;p&gt;When the parameter signature of a generic method includes a parameter that is of the same type as the type parameter for the method, it's not necessary to specify the type parameter when calling the method. Let's review an example:&lt;/p&gt;

&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;Class1&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//both method type argument and parameter are of the same type&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; SomeGenericMethod&amp;lt;T&amp;gt;(T sameAsTypeParameter)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;Test&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Main()&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Class1&lt;/span&gt; obj = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Class1&lt;/span&gt;();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//It's not necessary to specify method type parameter&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//Instead of obj.SomeGenericMethod&amp;lt;int&amp;gt;(100) use&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; obj.SomeGenericMethod(100);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;As you can see in the example above, the syntax for calling generic method is identical to syntax of calling non-generic method. This ability is called generic type inference. To enable inference, the parameter signature of a generic method must include a parameter that is of the same type as the type parameter for the method.&lt;/p&gt;

&lt;p&gt;Note: the compiler cannot infer the type based on the type of the returned value alone.&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=generic-method-inference"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=generic-method-inference" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=EdbXy3b"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=EdbXy3b" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=Joyw5uB"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=Joyw5uB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=0Xt1npb"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=0Xt1npb" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=Xhna0lb"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=Xhna0lb" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=gRG9PQB"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=gRG9PQB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=1OAMTtb"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=1OAMTtb" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/187787233" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/generic-method-inference.aspx</guid>
      <pubDate>Tue, 20 Nov 2007 17:54:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=generic-method-inference</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/187787233/generic-method-inference.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/generic-method-inference.aspx</feedburner:origLink></item>
    <item>
      <title>Two approaches to update database row if exists, insert if not</title>
      <description>&lt;p&gt;The biggest challenge with update/insert (so called &lt;a href="http://en.wikipedia.org/wiki/Upsert"&gt;upsert&lt;/a&gt;) is to minimize any kind of locks. Unfortunately there is no silver bullet for this &lt;a href="http://msdn2.microsoft.com/en-us/library/bb522522(SQL.100).aspx"&gt;yet&lt;/a&gt;. So let's review two the most commonly used methods:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Update, if @@ROWCOUNT = 0 then insert&lt;/strong&gt;&lt;/p&gt;

&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;UPDATE&lt;/span&gt; Table1 &lt;span style="color:blue"&gt;SET&lt;/span&gt; Column1 = @newValue &lt;span style="color:blue"&gt;WHERE&lt;/span&gt; Id = @id&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;IF&lt;/span&gt; &lt;span style="color:fuchsia"&gt;@@ROWCOUNT&lt;/span&gt; = 0&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;BEGIN&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue"&gt;INSERT INTO&lt;/span&gt; Table1 (Id, Column1) &lt;span style="color:blue"&gt;VALUES&lt;/span&gt; (@id, @newValue)&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;END&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;This method is good if you know that in most of the cases a row will exist and update will be performed. Otherwise the second method should be used.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. If row exists update, otherwise insert&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;IF&lt;/span&gt; &lt;span style="color:gray"&gt;EXISTS&lt;/span&gt;(&lt;span style="color:blue"&gt;SELECT&lt;/span&gt; * &lt;span style="color:blue"&gt;FROM&lt;/span&gt; Table1 &lt;span style="color:blue"&gt;WHERE&lt;/span&gt; Id = @id)&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;BEGIN&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue"&gt;UPDATE&lt;/span&gt; Table1 &lt;span style="color:blue"&gt;SET&lt;/span&gt; Column1 = @newValue &lt;span style="color:blue"&gt;WHERE&lt;/span&gt; Id = @id&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;END&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;ELSE&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;BEGIN&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue"&gt;INSERT INTO&lt;/span&gt; Table1 (Id, Column1) &lt;span style="color:blue"&gt;VALUES&lt;/span&gt; (@id, @newValue)&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;END&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;This one is good if you know that in most of the cases a row will not exist and insert will be performed. For such cases it executes SELECT statement followed by INSERT statement. That results in less expensive lock comparing to UPDATE + INSERT in previous method.&lt;/p&gt;

&lt;p style="margin-top:30px"&gt;P.S. both methods should be used in transaction with isolation level &lt;strong&gt;Serializable&lt;/strong&gt;.&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=update-insert-row-sql"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=52ddf431a6834c29b72e7f6214a23d5a&amp;u=update-insert-row-sql" border="0"/&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=aoXiiSb"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=aoXiiSb" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=MW59XIB"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=MW59XIB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=sBwvIKb"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=sBwvIKb" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=9ZqpXYb"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=9ZqpXYb" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=KuXSwxB"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=KuXSwxB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?a=jk8ypDb"&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~f/dotNetTipOfTheDay?i=jk8ypDb" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~4/186415148" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://dotnettipoftheday.org/tips/update-insert-row-sql.aspx</guid>
      <pubDate>Sat, 17 Nov 2007 23:00:00 GMT</pubDate>
      <wfw:commentRss>http://dotnettipoftheday.org/tips/CommentsRss.aspx?tipid=update-insert-row-sql</wfw:commentRss>
    <link>http://feeds.dotnettipoftheday.org/~r/dotNetTipOfTheDay/~3/186415148/update-insert-row-sql.aspx</link><feedburner:origLink>http://dotnettipoftheday.org/tips/update-insert-row-sql.aspx</feedburner:origLink></item>
    <item>
      <title>Improve your code readability: make more sense to conditions</title>
      <description>&lt;p&gt;Instead of:&lt;/p&gt;

&lt;div style="font-family: Courier New; font-size: 10pt; color