我理解如果我传递一个值类型(int,struct等)作为参数(没有ref关键字),该变量的副本将传递给该方法,但如果我使用该ref关键字,则传递对该变量的引用,不是新的.
但是使用引用类型(如类),即使没有ref关键字,也会将引用传递给方法,而不是副本.那么ref关键字与引用类型的用途是什么?
举个例子:
var x = new Foo();
Run Code Online (Sandbox Code Playgroud)
以下有什么区别?
void Bar(Foo y) {
y.Name = "2";
}
Run Code Online (Sandbox Code Playgroud)
和
void Bar(ref Foo y) {
y.Name = "2";
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
C#:为什么'ref'和'out'不支持多态?
我似乎无法理解为什么以下在C#中不起作用:
public static void Swap(ref Object a, ref Object b) {
Object t = b;
b = a;
a = t;
}
//Calls
String fname = "Ford";
Strinf lname = "James";
Swap(ref lname, ref fname);
Run Code Online (Sandbox Code Playgroud)
这是因为String已经引用了一个char数组,它是不可变的吗?
如果有的话,Python的参数传递规则与C#的参数传递规则有什么主要区别?
我对Python非常熟悉,只是开始学习C#.我想知道我是否能够想到规则集是关于何时通过引用传递一个对象,或者对于C#的值是否与在Python中相同,或者如果存在一些我需要记住的关键差异.