【问题标题】:C# vs C++ pass by reference handling [closed]C# vs C++ 通过引用处理传递[关闭]
【发布时间】:2012-06-04 06:30:30
【问题描述】:

这是书中的问题:

在函数中,按值传递参数和按引用传递参数有什么区别?说一下c#ha在处理引用传递的方式上与c++相比的一个优势。

我知道按值传递参数和按引用传递参数的区别,但 c# 与 c++ 相比有什么优势?

【问题讨论】:

  • 如果这是家庭作业,那么您应该这样标记您的问题。无论如何,C# 在这里有任何优势的想法是完全主观的(我当然不同意),所以没有正确的答案。
  • C# 对比 C++ 就像汽车对比地毯 (c)
  • @Loclip : C# 总是对引用类型使用引用语义; C++ 允许您选择所需的语义。它们是不同的,也不是“更好”,但 C++ 方法为程序员提供了更多控制权。
  • @ildjarn 值类型与引用类型以及按值传递与按引用传递是 C# 中的正交概念。可以按值或按引用传递引用,也可以按值或按引用传递值。
  • Loclip 询问的是 按值传递按引用传递,而您是在谈论值 语义 与. 参考语义。我只是指出这些在 C# 中是正交的:void value_by_value(some_struct a)void value_by_reference(ref some_struct b)void reference_by_value(some_class c)void reference_by_reference(ref some_class d)。你同意还是不同意?

标签: c# c++ comparison pass-by-reference pass-by-value


【解决方案1】:

因为语法改变了,它并没有改变概念。

也就是说,C# 唯一的“优势”是语法“更简洁”,因为您无需了解所有指针引用和取消引用语法& * ->

【讨论】:

  • @Cole : 你确定你理解 C++ 中的引用是什么吗?
  • @ildjarn "指针既危险又微妙,因为释放的内存区域可能包含与释放之前相同的数据,但随后可能会被不相关的代码重新分配和覆盖"
  • @Cole :主题是引用,而不是指针。
  • @ildjarn:我讨厌转到聊天链接,因为我倾向于在看到它之前点击它。
猜你喜欢
  • 2011-04-21
  • 2012-10-15
  • 2014-09-11
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
  • 1970-01-01
  • 1970-01-01
  • 2016-07-14
相关资源
最近更新 更多