相关疑难解决方法(0)

C#中引用类型变量的"ref"有什么用?

我理解如果我传递一个值类型(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# parameters pass-by-reference pass-by-value

167
推荐指数
6
解决办法
4万
查看次数

方法接受Object C#时字符串作为引用参数的问题

可能重复:
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数组,它是不可变的吗?

c# reference object immutability

4
推荐指数
1
解决办法
379
查看次数

C#vs Python参数传递

如果有的话,Python的参数传递规则与C#的参数传递规则有什么主要区别?

我对Python非常熟悉,只是开始学习C#.我想知道我是否能够想到规则集是关于何时通过引用传递一个对象,或者对于C#的值是否与在Python中相同,或者如果存在一些我需要记住的关键差异.

c# python parameter-passing

4
推荐指数
1
解决办法
3139
查看次数