<.NET框架,程序设计>之方法

       好久没有来博客园,突然打开主页有点不适应,也许人变得懒了,下面直接切入正题。

                方法---在C#中最为重要,方法构成函数,在这里主要讨论这三种方法:定义构造器方法(包括实例构造和类型构造),操作符重载方法,和转换操作符(包括隐式转换和显式转换)。

                下面来讨论第一种定义构造器方法(1)实例构造器,讲到实例构造器,它是方法,但是由于它的种种本质就会显得比较特殊,他负责一个实例初始化到一个良好的状态,不许有返回值。这里有个小小的技巧,如果我们不想这个类实例化,你可以把构造函数的访问限制设置为私有的(private),一个类可以有多个构造函数。系统创建类型的实例会执行下面步骤:首先为该实例分配一个内存空间,然后初始化该实例的附加成员(即方法表指针,和一个SyncBlockIndex),最后调用类型的实例构造器设置实例的初始状态。注意:在.NET中CLR(通用语言运行时)要求每个类都要有一个构造函数,在.NET中如果用户没有显式的构造函数,系统在生成IL代码的时候会自动生成一个无参数列表的构造函数。

     下面通过实例来深入的解释:

 

代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test
{
    
class Program
    {
        
static void Main(string[] args)
        {
                        
               Student Stu 
= new Student("benjon","330***2330","001","001");
        }
    }
    
class People
    {
         
private string Name;//人类的共同属性--姓名
         private string CID; //人类的共同属性--身份证号码
          
//构造方法
          public People(string _Name, string _CID)
         {
               Name 
= _Name;
               CID 
= _CID;
         }
         
/*属性公布器,因为这里的Name是私有的,所以除了类本身,其他都不可以访问,如果要想外界可以访问就可以用属性公布器*/
          
public string PName
         {
            
get {return Name;}
            
set {Name = PName;}
         }
    }
    
    
class Student:People
    {
         
private string ClassID;
         
private string StudentID;
         
//如果要用到基类相应的属性的话,我们就应该调用基类的相应的构造函数
         public Student(string _Name, string _CID,string _ClassID,string _StudentID):base(_Name,_CID)
         { 
             Name 
= _Name;
             CID 
= _CID;
             ClassID 
= _ClassID;
             StudentID 
= _StudentID;
         }
    }
}

 

 

值得注意的是:很多编译器厂商都会自动的调用基类的默认构造函数,这就是我们有时候不用显式的调用的基类的默认构造函数的原因。有些类是不用调用实例构造器,比如object.MemberwiseClone,调用他的方法只要执行:为该方法执行分配内存空间,初始化对象的成员,将源对象中的数据字段拷贝到即将创建的心对象当中,另外反序列对象也不会调用实例构造器

 

posted @ 2010-11-07 23:17  Benjon  阅读(56)  评论(0)    收藏  举报