c# - 在 C# 中是否可以避免 C++ 中的那些危险习语/用法?

标签 c# c++

<分区>

在这篇 Herb Sutter 的文章中 ' Write What You Know, and Know What You Write ',他就 C++ 中的危险习语提出警告。

T& T::operator=( const T& other )
{
  if( this != &other )
  {
    this->~T();
    new (this) T(other);
  }
    return *this;
} 

C# 能解决这种危险情况吗?就危险性较低的习语而言,C# 是否是比 C++ 更好的编程语言?

最佳答案

这种特别的丑陋(我不会称之为惯用)在 C# 中是不可能的,因为 operator = 不能在 C# 中重新定义。这不会让 C# 变得更好——有时重新定义 = 是有意义的,但你不能,所以你需要一个变通办法。

关于c# - 在 C# 中是否可以避免 C++ 中的那些危险习语/用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4108670/

相关文章:

c++ - 迭代器在C++内部如何工作?

c++ - Moses 源代码中的关键字 mutable 是做什么用的?

c++ - 可以在 C++20 的 `decltype` 或 `sizeof` 表达式中定义类型吗?

存储在 LPCSTR 中的 C++ 字符 .. 损坏了吗?

c++ - 如何检查将 const_reverse_iterator 分配给 reverse_iterator 是否无效?

c# - 动态翻译以避免 C# 语法错误

c# - 在 ASP.NET 中访问 app.config

c# - Resharper 提示测试项目中的得分方法不足

javascript - jquery 调用 c# api Controller

c# - 直接在 Visual Studio 项目中使用自定义控件