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

Jam*_*ord 4 c# reference object immutability

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

Eri*_*ert 9

这是重复的

为什么'ref'和'out'不支持多态?

看到答案为什么它不起作用.

为了使它工作,你可以制作一个通用的方法:

public static void Swap<T>(ref T a, ref T b) 
{
    T t = b;     
    b = a;     
    a = t; 
}
Run Code Online (Sandbox Code Playgroud)

现在所有类型都退房了.