記得剛學構造函數和屬性的時候,一直感覺這些東西沒什么用,比如屬性,明明我用字段就可以實現了,干嘛還要多寫那幾行代碼,后來做的項目多了,看的書也多了,才慢慢體會到很多編程語言高級特性的妙處,才真正理解了這些特性的本質,比如 C#中委托實際上就相當於C語言的函數指針,通過委托把函數當參數來提高程序的靈活性和低耦合性。這里通過一個簡單的實例來寫一下自己的一些理解,注釋里寫的很詳細了,話就不多說了。
Human類:
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 ); //這里用到了三元運算符 如果是 就:前面的 否 就:后面的
}
}
Program類
class Program
{
//這個練習是對屬性和構造函數的綜合應用
static void Main(string[] args)
{
//直接用構造函數初始化就執行了所有操作 相對一個一個賦值再調用方法簡潔很多
Human xiaoming = new Human("小明",19,false,"中國");
//這個是構造函數的重載 用於實現不同的初始化 或者說 功能
//Human xiaoming = new Human("小明", 19, "中國");
Console.ReadKey();
}
}
程序運行結果
這是第一個構造函數:
你好,我叫小明,我19歲了,我是個男生,我來自中國