一起學C#(十七)

實例初始化

通過給類添加方法成員,可以簡化代碼,減少編程的工作量。

類還有一種方法成員,叫做構造函數,它們和類同名,沒有返回值,可以用來簡化創建實例並且初始化的工作。比如:

class Employeer
{
  public string Name;  // 姓名,如果不加public,無法使用zhang.Name訪問數據,以下同
  public ushort Age;  // 年齡
  public bool Sex;  // 性別

  public Employeer(string name, ushort age, bool sex)
  {
    Name = name;
    Age = age;
    Sex = sex;
  }
}

這個員工類Employeer定義了一個構造函數,有了這個構造函數,創建員工實例的工作就簡單多了:

Employeer zhang = new Employeer("張能", 28, true);  // 員工實例,張能

在C#裏,可以定義不同的構造函數,使用不同的初始值給實例初始化,比如可以增加:

  public Employeer(string name, ushort age, string sex)
  {
    Name = name;
    Age = age;
    if (sex.CompareTo("男") == 0)  // 如果性別是"男"
    {
      Sex = true;  // 用true表示男員工
    }
    else  // 如果不是"男"
    {
      Sex = false;  // 默認爲女員工,用false表示
    }
  }

新增加的構造函數和第一個有一樣的名稱,只是最後一個參數的類型從bool改成了string,函數裏增加了一個判斷語句,用來區分Sex的值是true還是false。新建一個員工實例,可以寫成這樣:

Employeer employeer = new Employeer("趙風", 29, "女");  // 員工實例,趙風

下面是完整的示例:

using System;

namespace csdn.blog.aerosea
{
  class Program
  {
    static void Main(string[] args)
    {
      Employeer zhang = new Employeer("張能", 28, true);  // 員工實例,張能
      Employeer employeer = new Employeer("趙風", 29, "女");  // 員工實例,趙風

      // 變量zhang裏面保存的是張能的信息
      zhang.ShowInfo();

      Console.WriteLine();  // 顯示一個空行

      // 變量employeer中保存的是趙風的信息
      employeer.ShowInfo();

      Console.WriteLine("\n按任意鍵繼續...");
      Console.ReadKey();
    }
  }

  class Employeer
  {
    public string Name;  // 姓名,如果不加public,無法使用zhang.Name訪問數據,以下同
    public ushort Age;  // 年齡
    public bool Sex;  // 性別

    public Employeer(string name, ushort age, bool sex)
    {
      Name = name;
      Age = age;
      Sex = sex;
    }

    public Employeer(string name, ushort age, string sex)
    {
      Name = name;
      Age = age;
      if (sex.CompareTo("男") == 0)  // 如果性別是"男"
      {
        Sex = true;  // 用true表示男員工
      }
      else  // 如果不是"男"
      {
        Sex = false;  // 默認爲女員工,用false表示
      }
    }

    // 顯示員工信息
    public void ShowInfo()
    {
      Console.WriteLine("姓名:" + Name);
      Console.WriteLine("年齡:" + Age);
      Console.Write("性別:");
      if (Sex)
      {
        Console.WriteLine("男");
      }
      else
      {
        Console.WriteLine("女");
      }
    }
  }
}

一起學C#(十六)中的示例,新建一個實例是不是簡單一些了呢?

當然,新建實例的兩條語句也可以這樣寫:

Employeer zhang = new Employeer("張能", 28, "男");  // 員工實例,張能
Employeer employeer = new Employeer("趙風", 29, "女");  // 員工實例,趙風

或者:

Employeer zhang = new Employeer("張能", 28, "男");  // 員工實例,張能
Employeer employeer = new Employeer("趙風", 29, "默");  // 只要不是"男",默認是女員工

這幾種寫法,生成的員工實例是一樣的。兵無定勢,水無常形,編程也是如此

第二個構造函數也可以這樣寫,儘管寫法不一樣,結果是一樣的,兵無定勢嘛:

  public Employeer(string name, ushort age, string sex)
  {
    Name = name;
    Age = age;
    switch (sex)
    {
      case "男":
        Sex = true;
        break;
      default:
        Sex = false;
        break;
    }
  }

 

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