.NET/C# 类构造函数中this的用法

  在C#中this用来指代当前对象,用于当成员函数中的形参名跟成员变量名一致时,进行区分。

  但this不仅仅只有这一作用,this还可以如下这样用:

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt 1 class class1
2 {
3 private int i_a;
4 private string s_a;
5
6 public class1()
7 {
8 i_a = 0 ;
9 s_a = " default " ;
10 }
11
12 public class1( int i_a)
13 {
14 if (i_a > 5 && i_a < 10 )
15 {
16 this .i_a = i_a;
17 }
18 s_a = " defalt " ;
19 }
20
21 public class1( string s_a)
22 {
23 this .i_a = 0 ;
24 this .s_a = s_a;
25 }
26 public class1( int i_a, string s_a)
27 {
28 if (i_a > 5 && i_a < 10 )
29 {
30 this .i_a = i_a;
31 }
32 this .s_a = s_a;
33 }
34
35 public void print()
36 {
37 Console.WriteLine( " i_a = {0} " , i_a);
38 Console.WriteLine( " s_a = {0} " , s_a);
39 }
40 }
注意到,这个对成员变量i_a的值的鉴定操作在第2跟第4个构造函数中重复了两次,如果这个操作复杂一点,这样的变量多一点,那重复代码就大大增加,影响 了代码的维护性,一旦这个操作规则变化了,改动起来就比较麻烦,所以好的方法当然是将这个鉴定操作提取出来,放到一个单独的函数中,然后统一调用,不过 C#还提供了这样一种机制来,如下:

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt 1 class class1
2 {
3 private int i_a;
4 private string s_a;
5
6 public class1()
7 {
8 i_a = 0 ;
9 s_a = " default " ;
10 }
11
12 public class1( int i_a): this (i_a, " default " ){}
13
14 public class1( string s_a): this ( 0 ,s_a){}
15
16 public class1( int i_a, string s_a)
17 {
18 if (i_a > 5 && i_a < 10 )
19 {
20 this .i_a = i_a;
21 }
22 this .s_a = s_a;
23 }
24
25 public void print()
26 {
27 Console.WriteLine( " i_a = {0} " , i_a);
28 Console.WriteLine( " s_a = {0} " , s_a);
29 }
30 }

 

另外,this还可以用在索引器中。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-627716/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12639172/viewspace-627716/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值