记得刚学构造函数和属性的时候,一直感受这些东西没什么用,好比属性,明明我用字段就能够实现了,干吗还要多写那几行代码,后来作的项目多了,看的书也多了,才慢慢体会到不少编程语言高级特性的妙处,才真正理解了这些特性的本质,好比 C#中委托实际上就至关于C语言的函数指针,经过委托把函数当参数来提升程序的灵活性和低耦合性。这里经过一个简单的实例来写一下本身的一些理解,注释里写的很详细了,话就很少说了。编程
class Human { //经过有参数的构造函数进行初始化 构造函数能够重载 public Human(string name, int age, bool isgirl, string country) { Console.WriteLine("这是第一个构造函数:"); Name = name; Age = age; IsGirl = isgirl; Country = country; SayHi(); } public Human(string name, int age, string country) { Console.WriteLine("这是第二个构造函数:"); Name = name; Age = age; Country = country; } //经过定义属性 使得其余类不能直接修改这个类里的字段 从而实现更好的封装 //简洁法 定义属性和字段 字段编译器自动生成的 public string Name { get; set; } public int Age { get; set; } public bool IsGirl { get; set; } public string Country { get; set; } //下面是通常方法定义字段和属性 //private string name; //public string Name //{ // get { return name; } // set { name = value; } //} //打招呼方法 public void SayHi() { Console.WriteLine("你好,我叫{0},我{1}岁了,我是个{2}生,我来自{3}", Name, Age, (IsGirl ?"女生":"男"),Country ); //这里用到了三元运算符 若是是 就:前面的 否 就:后面的 } }
class Program { //这个练习是对属性和构造函数的综合应用 static void Main(string[] args) { //直接用构造函数初始化就执行了全部操做 相对一个一个赋值再调用方法简洁不少 Human xiaoming = new Human("小明",19,false,"中国"); //这个是构造函数的重载 用于实现不一样的初始化 或者说 功能 //Human xiaoming = new Human("小明", 19, "中国"); Console.ReadKey(); } }
这是第一个构造函数: 你好,我叫小明,我19岁了,我是个男生,我来自中国