class Program
{
static void Swap(string a, string b)
{
string c = a;
a = b;
b = c;
}
static void Main(string[] args)
{
string str1 = "Jenny";
string str2 = "Benny";
Swap(str1, str2);
Console.WriteLine(str1);
Console.WriteLine(str2);
Console.Read();
}
}
为虾米2个字符串的值没有交换过来捏, string是引用类型呀
是传值,传参的时候string前面加个ref就是引用啦
string是一个特殊的引用类型。
应用上,string类型表现为值类型语义,内存上,string类型实现为引用类型,存储在托管堆中。
楼主要是还是不明白,那推荐一本书<你必须知道的.net> 如此特殊:大话string
这个章节将的很清楚 而且这本书都是讲底层的 应该比较符合楼主的胃口
希望对你有帮助
确实是传的值,string这个引用类型和值类型很类似.
string 是特殊的引用类型
由上面可以看出;调用swap函数 之后,str1 和 str2 各自指向的值都没有发生变化
这个不是类型的问题,而是参数传递方式的问题。你的方法属于按值传递,只传递参数的副本,要想实现值的交换就要按引用传递,这样传递的是参数的内存地址,可以使用ref或者out。
static void Swap(ref string a,ref string b)
{
string c = a;
a = b;
b = c;
}
Swap(ref str1, ref str2);这样就能实现了。
你的方法写的有问题。。。