【发布时间】:2012-08-13 13:23:39
【问题描述】:
我主要使用 C++ 工作,现在在我的新工作中使用 C#,在这里阅读了一些关于 'ref' 关键字和 c# 值与引用类型的内容后,我仍然发现它们有些混淆。
据我所知,如果您将这些传递给方法,这些将是类似的 C++ 样式:
值类型:
public void CSharpFunc(value)
和
public void CPlusplusFunc(value)
参考类型:
public void CSharpFunc(reference)
和
public void CPlusPlusFunc(&reference)
'ref'/指针
public void CSharpFunc(ref bar)
和
public void CPlusPlus(*bar)
这是一个正确的类比吗?
【问题讨论】:
-
引用/指针类比不是一个好的 IMO。 C# 中根本没有指针概念(我的意思是,当然是托管 C#)。
-
@ken2k 好的,但是在 C# 中,
ref int a提供了与 c/c++ 中的int *a相同的能力。它允许您更改函数内部的外部变量的值。 -
@dvvrd 这是不正确的。请看我的例子。
-
至少对于 C++ 代码部分(我无法判断 C# 是否正确),如果您使用实际有效的 C++ 语法会很有用。
-
@weston 确实,
ref int和int *都允许您模拟“按引用传递”,但与 C 不同的是,C++ 具有 real 按引用传递融入语言,那就是int &。