关于方法参数的一些东西_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 关于方法参数的一些东西

关于方法参数的一些东西

 2013/8/26 18:57:33  崎仔  博客园  我要评论(0)
  • 摘要:在方法上面的参数。如果是值类型的参数,将会进行值传递,实参的值不受形参的值影响。(代码一)如果是字符串的参数,将会进行值传递,实参的值不受形参的值影响。(代码一)如果是引用类型的参数,将会进行引用传递,实参的值可被形参影响。(代码一)但是引用类型的参数在方法体内被重新初始化(赋值)的话,初始化(赋值)后的形参就不再影响实参的值。(代码二)1publicclassA2{3publicintnum=0;4publicstringstr="0";5}67publicclassB8
  • 标签:方法

在方法上面的参数。

如果是值类型的参数,将会进行值传递,实参的值不受形参的值影响。(代码一)

如果是字符串的参数,将会进行值传递,实参的值不受形参的值影响。(代码一)

如果是引用类型的参数,将会进行引用传递,实参的值可被形参影响。(代码一)

但是引用类型的参数在方法体内被重新初始化(赋值)的话,初始化(赋值)后的形参就不再影响实参的值。(代码二)

class="code_img_closed" src="/Upload/Images/2013082618/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('25e0b6bb-4243-42a4-a0d5-a14f654e189d',event)" src="/Upload/Images/2013082618/2B1B950FA3DF188F.gif" alt="" />
 1 public class A
 2 {
 3     public int num = 0;
 4     public string str = "0";
 5 }
 6 
 7 public class B
 8 {
 9     public void Change(int num, string str, A obj)
10     {
11         num = 2;
12         str = "2";
13 
14         obj.num = 2;
15         obj.str = "2";
16     }
17 }
18 
19 public class Process
20 {
21     public void Start()
22     {
23         //初始化值类型 num。
24         int num = 1;
25         //初始化字符串类型 str。
26         string str = "1";
27         //初始化引用类型 obj。
28         A obj = new A();
29         obj.num = 1;
30         obj.str = "1";
31 
32         //输出:[int: 1][string: 1][A.num: 1][A.str: 1]
33         Console.WriteLine(string.Format("[int: {0}][string: {1}][A.num: {2}][A.str: {3}]", num, str, obj.num.ToString(), obj.str));
34 
35         //初始化操作对象。
36         B b = new B();
37         b.Change(num, str, obj);
38 
39         //输出:[int: 1][string: 1][A.num: 2][A.str: 2]
40         Console.WriteLine(string.Format("[int: {0}][string: {1}][A.num: {2}][A.str: {3}]", num, str, obj.num.ToString(), obj.str));
41 
42         Console.Read();
43     }
44 }
代码一
 1 public class A
 2 {
 3     public int num = 0;
 4     public string str = "0";
 5 }
 6 
 7 public class B
 8 {
 9     public void Change(A a)
10     {
11         a.num = 2;
12         a.str = "2";
13     }
14 
15     public void Change1(A a)
16     {
17         a = new A();
18         a.num = 3;
19         a.str = "3";
20     }
21 
22     public void Change2(A a, A a2)
23     {
24         a = a2;
25     }
26 }
27 
28 public class Process
29 {
30     public void Start()
31     {
32         //初始化对象。
33         A a = new A();
34         //输出:[int: 0][string: 0]
35         Console.WriteLine(string.Format("[int: {0}][string: {1}]", a.num.ToString(), a.str));
36 
37         //直接改变对象的成员的值。
38         a.num = 1;
39         a.str = "1";
40         //输出:[int: 1][string: 1]
41         Console.WriteLine(string.Format("[int: {0}][string: {1}]", a.num.ToString(), a.str));
42 
43         //在方法体内改变对象的成员的值。
44         B b = new B();
45         b.Change(a);
46         //输出:[int: 2][string: 2]
47         Console.WriteLine(string.Format("[int: {0}][string: {1}]", a.num.ToString(), a.str));
48 
49         //在方法体内给对象重新初始化。
50         b.Change1(a);
51         //输出:[int: 2][string: 2]
52         Console.WriteLine(string.Format("[int: {0}][string: {1}]", a.num.ToString(), a.str));
53 
54         //在方法体内给对象重新赋值。
55         A a2 = new A();
56         a2.num = 4;
57         a2.str = "4";
58 
59         b.Change2(a, a2);
60         //输出:[int: 2][string: 2]
61         Console.WriteLine(string.Format("[int: {0}][string: {1}]", a.num.ToString(), a.str));
62 
63         Console.Read();
64     }
65 }
代码二

 

发表评论
用户名: 匿名