c#问题 高手进

来源:百度知道 编辑:UC知道 时间:2024/05/20 17:30:08
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);
}
}
给出程序的 输出结果 再解释一下这段程序 尽量详细点
我主要对类,方法,对象这些东西有点模糊

class Class1 { //定义类Class1
private string str = "Class1.str"; //其中定义一个私有变量str="Class1.str"
private int i = 0; //定义私有整形变量i
static void StringConvert(string str) { //定义静态方法
str = "string being converted.";
}
static void StringConvert(Class1 c) { //重载了上面定义的方法
c.str = "string being converted.";
}
static void Add(int i) { //定义静态方法Add
i++;
}
static void AddWithRef(ref int i) { //重载Add参数为按引用传递
i++;
}
static void Main() { //主函数
int i1 = 10;
int i2 = 20;
string str = "str";
Class1 c = new Class1(); //实例化Class1的一个对象c
Add(i1); //调用Add方法,虽然i1++但是只是按值传递了.
AddWithRef(ref i2); //调用AddWithRef的方法并按引用传递
Add(c.i); //将对象c中的变量i传入Add方法,单因为c.i本身就是一个引用,所以结果会+1
StringConvert(str); //调用StringConvert,但是因为值是按值传递,所以str值仍为Class1.str
StringConvert(c); //调用StringConvert,但因为传递的是个对象,本身就是按引用传递,改变了改对象的私有属性,所以c.str为string being converted