黑马程序员技术交流社区
标题:
求讲解C#程序执行过程,步骤和结果,谢谢!
[打印本页]
作者:
许庭洲
时间:
2012-7-16 10:52
标题:
求讲解C#程序执行过程,步骤和结果,谢谢!
本帖最后由 许庭洲 于 2012-7-16 10:57 编辑
求程序执行过程,步骤和结果
System.Collections。
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);//为什么本行输出是str , 不懂?
Console.WriteLine(c.str);
}
}
作者:
朱永恒
时间:
2012-7-16 12:28
static void StringConvert(string str) 和 string str = "str" 里德str是两回事吧 只是名字一样 但是两个不同的字符串 当然Console.WriteLine(str) 输出的是 string str = "str" 这个值
作者:
曾玉锋
时间:
2012-7-16 12:56
结果是:
10
21
0
str
string beging converted.
程序执行步骤:
从main()函数进入逐步执行,
int i1=10;
int i2=20;
string str="str";
/*这里再次重复声明变量str,这里的str是局部变量,
而上面的 private string str = "Class1.str";
在Class1类里是全局变量。在局部变量和全局变量名相同的情况下
要想对全局变量进行操作,得通过类的实例.变量名进行(static 声明的变量用类名.变量名)
否则,在局部变量作用范围内,得到的将是局部变量的值。
*/
Class1 c =new Class1();//创建一个Class1实例
Add(i1);
/*调用Add(int i)方法;因为方法的参数是值传递,i的作用范围仅在方法内,
对外部的数据无影响。
*/
AddWithRef(ref i2);
/*调用AddWithRef( ref int i)方法;因为方法的参数是用ref修饰的引用传递,i在方法中参与运算以后结果将保留,
对外部的数据有影响。
*/
Add(c.i); //调用对象c的属性i=0.作为参数
StringConvert(str);//调用StringConvert(str)将值传递给全局变量str
StringConvert(c);//给传递的对象c属性str赋值为"string beging converted."
Console.WriteLine(i1);//输出结果10;
Console.WriteLine(i2);//输出结果21;
Console.WriteLine(c.i);//输出对象c的i属性输出0;
Console.WriteLine(str);//这里设计作用域问题,上面有简单说明,输出str
Console.WriteLine(c.str);//调用对象c的str属性,输出string beging converted.
我想,楼主你主要是变量的作用域问题有点迷糊,可以多看看。
static void Add(int i) {
i++;
}
static void AddWithRef(ref int i) {
i++;
}
这两个方法中的i都是参数中的i,而不是全局变量i
个人见解,若错误请见谅。
作者:
许庭洲
时间:
2012-7-16 13:49
本帖最后由 许庭洲 于 2012-7-16 13:54 编辑
曾玉锋 发表于 2012-7-16 12:56
结果是:
10
21
谢谢你!回答的太棒了!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2