结构类型、结构函数和构造函数


         在初学C#的时候,有三个概念可能会容易搞混——结构类型、结构函数、构造函数。

         结构类型是由几个数据组成的数据结构,这些数据可能有不同的的类型。结构就是把这些不同类型的数据组合在一起,形成由用户自定义变量类型的数据,以方便用户使用。结构使用struct关键字来定义,语法如下:

         struct <typeName>

         {

                   <memberDeclarations>

         }

<memberDeclarations>部分包含变量的定义(称为结构的数据成员),与声明一个普通变量的格式一样。如果要让外界访问结构的数据成员,可以在声明变量成员的时候加上访问修饰符public。如下:

         structStudent

         {

                   publicstring name;                                                        

                   publicint age;

         }

定义好结构之后,我们就可以定义新类型的变量,来使用该结构,并且使用“.”字符访问这个组合变量中的数据成员。

         Studentstu;

         stu.name= “Jim”;

         stu.age= 20;

 

         结构函数是在结构类型的基础上,让结构发挥更多的作用,而不仅仅只是在一个地方存储多个数据元素。结构可以同时包含有函数和数据,这就是结构函数。

         structStudent

         {

                   publicstring name;                                                        

                   publicint age;

                   publicstring SayHi()

                   {

                            Return“Hello,Everyone!My Name is ”+name+”, I’m ”+age;

                   }

         }

在外面,我们就可以通过stu.SayHi()的方法来调用这个函数。我们把把合适的函数添加到结构类型中,就可以集中处理常见的任务,用于简化其它操作的过程。在上面的Student结构中,name和age可以被看作全局成员,SayHi()函数可以直接访问它们。结构是值类型。

                                                                                                                                                

         构造函数与结构又是截然不同的两个概念。当我们在定义一个类时,如果没有显式的指定,系统会给这个类赋予一个默认的无参构造函数,通过这个构造函数,我们就可以新建这个类的对象。这个构造函数与包含它的类同名,有访问修饰符,但没有void。

         classStudent

         {

                   publicStudent()

                   {

                   }

         }

当访问修饰符为public时,允许在类的外面使用new关键字来创建该类的实例。当访问修饰符为private时,不可以使用new关键字来创建对象,这种用法一般用于返回该类的唯一实例。我们还可以给类添加非默认的构造函数,这些构造函数都需要参数。

         publicclass Student

         {

                   publicstring _name;

                   publicint _age;

                   publicStudent()

                   {

                   }

                   publicStudent(string name,int age)

                   {

                            _name= name;

                            _age= age;

                   }

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章