Are those dangerous idioms/usages in C++ avoidable in C#?
<p>In this Herb Sutter's article '<a href="http://www.gotw.ca/publications/advice97.htm" rel="nofollow">Write What You Know, and Know What You Write</a>', he warns about the dangerous idioms in C++.</p>

<pre><code>T&amp; T::operator=( const T&amp; other )
{
  if( this != &amp;other )
  {
    this-&gt;~T();
    new (this) T(other);
  }
    return *this;
} 
</code></pre>

<p>Does C# solve this kind of dangerous cases? Is C# a better programming language than C++ in terms of having less dangerous idioms?</p>
