在 C++ 中,可以通过值和引用将对象传递给函数。
class MyClass {
// ...
}
void foo(MyClass by_value) {
// ...
}
void bar(MyClass& by_reference) {
// ...
}
在 C++ 中通过引用传递对象通常更好,因为它可以防止调用类的复制构造函数。
C#有一个
ref
关键字,看起来和c++的引用类似,但是How do I pass a const reference in C#?说的是复制引用。这是否意味着对象本身也被复制了?
ref
关键字用于通过引用而不是值传递参数。 ref
关键字为参数创建形式参数别名,该参数必须是变量。换句话说,对形参的任何操作都是对实参进行的。
例如:
void Method(ref int refArgument)
{
refArgument = refArgument + 44;
}
int number = 1;
Method(ref number);
Console.WriteLine(number);
// Output: 45
所以要回答你的问题,
ref
关键字不会“复制”变量。
您可以在此处阅读有关
ref
关键字的更多信息:https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/ref