首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

简单的this指针应用,该如何处理

2012-01-16 
简单的this指针应用classProgram{publicclassTime{privateinthourprivateintminuteprivateintsecondpub

简单的this指针应用
class   Program
        {
                public   class   Time
                {
                        private   int   hour;
                        private   int   minute;
                        private   int   second;
                        public   Time()
                        {
                                //以下3个this指针可以省略
                                this.hour   =   0;
                                this.minute   =   0;
                                this.second   =   0;
                        }
                        public   Time(int   hour,   int   minute,   int   second)
                        {
                                //以下3个this指针不能省略
                                this.hour   =   hour;
                                this.minute   =   minute;
                                this.second   =   second;
                        }
                        public   int   Hour
                        {
                                get
                                {
                                        return   this.hour;
                                }
                                set
                                {
                                        this.hour   =   value;
                                }


                        }
                        public   int   Minute
                        {
                                get
                                {
                                        return   this.minute;
                                }
                                set
                                {
                                        this.minute   =   value;
                                }
                        }
                        public   int   Second  
                        {
                                get
                                {
                                        return   this.second;
                                }
                                set
                                {
                                        this.second   =   value;
                                }
                        }
                        public   void   printStandard()
                        {
                                Console.WriteLine( "Standard   print: ");
                                Console.WriteLine( "{0}: ",(hour==0||hour==12)?hour:hour%12);
                                Console.WriteLine( "{0}{1}: ",minute <0? "0 ": " ",minute);


                                Console.WriteLine( "{0}{1}: ",second <10? "0 ": " ",second);
                                Console.WriteLine( "{0} ",hour <12? "AM ": "PM ");
                        }
                        public   void   printMilitary()
                        {
                                //本方法只能使用this指针
                                ConvertToMilitary.printMilitary(this);
                        }
                }
                public   class   ConvertToMilitary
                {
                        public   static   void   printMilitary(Time   time)
                        {
                                Console.WriteLine( "Military   print: ");
                                Console.WriteLine( "{0}{1}: ",   time.Hour   <   10   ?   "0 "   :   " ",   time.Hour);
                                Console.WriteLine( "{0}{1}: ",   time.Minute   <   0   ?   "0 "   :   " ",   time.Minute);
                                Console.WriteLine( "{0}{1}: ",   time.Second   <   10   ?   "0 "   :   " ",   time.Second);
                        }
                }
                               
                static   void   Main(string[]   args)
                {
                        Time   t1   =   new   Time(13,   23,   45);
                        Console.WriteLine( "t1: ");
                        t1.printStandard();
                        t1.printMilitary();
               
                }


请问哪位高手教教我为什么默认的构造函数this可以省略而构造函数不能,还有ConvertToMilitary.printMilitary(this)中的this到底是什么意思

[解决办法]
不能省略this那个构造函数是因为你的参数名与字段名一致,
编译器无法区分

2.this代表传入的time类
比如time a = new time();
a.printMilitary这个方法内部操作的对象就是a
[解决办法]
为什么默认的构造函数this可以省略而构造函数不能

=========

因为你构造函数中的参数隐藏了同名的类字段

this.xxxx 表示引用类字段


ConvertToMilitary.printMilitary(this)中的this到底是什么意思
=======
当前的 Time 对象实例

热点排行