C#问题!HELP!

来源:百度知道 编辑:UC知道 时间:2024/06/01 03:58:21
写出程序的输出结果
class Class1{
private string str="Class1.str";
private int i=0;
static void StringConvert(string str)
{str="string being converted";
}
static void StringConvert(Class1 c)
{c.str="string being converted";
}
static void Add(int i)
{i++;

}
static void AddWithRef(ref int i)
{i++;
}
static void Main()
{int i1=10;
int i2=20;
string str="str";
Class1 c=new Class1();
Add(i1);
AddWithRef(ref i2);
Add(c.i);
StringConvert(str);
StringConvert(c);
Console.WriteLine(i1)
Console.WriteLine(i2)
Console.WriteLine(c.i)
Console.WriteLine(str)
Console.WriteLine(c.str)

}

}

我写的是:
11
20
1
string being converted
string being converted
对不对啊???为什么???

10
21
0
str
string being converted

10//这个是传值,是将i的值复制一份然后传进函数,函数里面对i的操作不影响外面的i的值
21//这个是传引用,函数里面操作i改变的直接就是i的值
0//和第一个一样
str//和第一个一样
string being converted//对于参数是一个类的对象来说,传的都是引用,所以这里直接改变c里面的str的值