Very nice insight in this post. I am making the switch over from C++, so I am having to relearn how to handle memory in C#.

In C++, I make a habit of checking for valid pointers before using them...
Code:
CMyClass* pClassPointer = NULL;
pClassPointer = new CMyClass();
if(pClassPointer == NULL)
{
   ASSERT(FALSE);
   return FALSE;
}

pClassPointer->m_intMember = 7;
delete pClassPointer;
pClassPointer = NULL;
return TRUE;
The above code is safe way (I've found) to use pointers.

My question is, do the same rules apply in C# for reference types? That is... if I use a reference type, should I first check to see if its null, and then when I'm done, should I set it to null (the equivalent of delete i C++)? In doing this, do I expel the risk of a memory leak?