<.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;
}
}
}
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,调用他的方法只要执行:为该方法执行分配内存空间,初始化对象的成员,将源对象中的数据字段拷贝到即将创建的心对象当中,另外反序列对象也不会调用实例构造器


浙公网安备 33010602011771号