值类型和引用类型

来源:百度知道 编辑:UC知道 时间:2024/07/02 01:39:44
public static void Test()
{
int int1 = 1;
int int2 = int1;
int1 = 2;
Console.WriteLine("{0} {1}",int1,int2);

string str1 = "a";
string str2 = str1;
str1 = "b";
Console.WriteLine("{0} {1}",str1,str2);
//2 1
//b a
//为什么结果是这样,第一个int类型的我想的通
//第二个: string类型不是说是引用类型吗?那么我更改了str1,并且str2是等于str1的,因此我认为都应该输出b,怎么str2的值没变
}

哦,这是一段C# 程序吧

你的疑问是由于你没有搞清楚writeline 参数动作顺序

当编译器编译时编译到

console.WriteLine("{0}{1}",str1,str2);

时,编译器先从变量中搜寻str2 的值,然后再搜寻 str1 的值,就是如果你在编译器引用str2 后改变str1 的值,就不会影响str2 的值啦!也就是说WriteLine 函数的参数动作顺序是倒序的。

这一点在所有的类C编程语言里,比如C 中printf 也是这样引用参数的。