title: How to reinitialize an object in C# at the same memory location in terms of C++ (or is it done automatically)?
body: <p>In C++ I used constructions like </p>
  
  <pre><code>#include "stdafx.h"
  #include "TestStaticPointer.h"
  
  MyClass* MyClass::myStaticPointer;
  
  int main()
  {
      ProgrammStart();
  
      return 0;
  }
  
  void ProgrammStart()
  {
      MyClass::myStaticPointer = new MyClass();
  }
  
  void SomeProgrammPlace()
  {
      *MyClass::myStaticPointer = MyClass();
  }
  </code></pre>
  
  <p>So that I allocated memory just once in ProgrammStart() and then I used the same memory location to reinitialize my static pointer (without reallocating by 'new'), I just used construction "= MyClass();". </p>
  
  <p>How can I do this in C#? Does the IL take all the work about allocations? Does 'new' always mean a 'new' memory location (not the same place in memory) in terms of C++?</p>