关于C# this 指针
生活随笔
收集整理的這篇文章主要介紹了
关于C# this 指针
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
This關鍵字的另一種用法是使用一項名為構造函數鏈的技術來設計類。當定義了多個構造函數時,這個設計模式就會很有用。由于構造函數通常會驗證傳入的參數來強制各種業務規則,所以在類的構造函數集合中經常會找到冗余的驗證邏輯。考慮如下更新后的Motocycle:
Class Motorcycle
{
Public int driverIntensity;
Public string driverName;
Public Motorcycle()
{}
//冗余的構造函數邏輯
Public Motorcycle(int intensity)
{
If(intensity > 10)
{
Intensity = 10;
}
driverIntensity = intensity;
}
Public Motorcycle(int intensity,string name)
{
If(intensity>10)
{
Intensity = 10;
}
driverIntensity = intensity;
driverName = name;
}
……
}
在這里,每一個構造函數確保強度等級不超過?10。雖然可以這么做,但是在兩個構造函數中有冗余代碼語句。這不夠完美,如果規則改變的話,就必須在多個位置更新代碼。
改進這種情況的一個方法就是在?Motocycle類中定義一個用來驗證傳入參數的方法。如果這么做的話,每一個構造函數就可以進行字段賦值之前調用這個方法。雖然這個方法確實可以隔離在業務規則改變時需要修改的代碼,但是我們就會面臨如下的冗余:
class Motorcycle
{?
public int driverIntensity; public string driverName; //構造函數 Public Motorcycle() {} Public Motorcycle(int intensity) { SetIntensity(intensity); } Public Motorcycle(int intensity,string name) { SetIntensity(intensity); driverName = name; } Public void?SetIntensity(int intensity) { If(intensity >10) { Intensity = 10; }? driverIntensity = intensity; } …… } 一個更簡潔的方案就是,讓一個接受最多參數個數的構造函數做“主構造函數”,并且實現必須的驗證邏輯。其余的構造函數可以使用?this關鍵字把傳入的參數轉發給主構造函數,并且提供所有必須的其他參數。這樣,整個類中只會有一個構造函數需要我們去操心,其余構造函數基本是空的。 下面是Motorcycle?類的最后一次迭代。在串聯構造函數時,請注意?this如何在構造函數本身的作用域之外“躲開”構造函數的聲明: class Motorcycle { public int driverIntensity; public string driverName; //構造函數 public Motorcycle(){} public Motorcycle(int intensity):this(intensity,””){} public Motorcycle(string name):this(0,name){}? //這是做所有工作的“主”構造函數?. Public Motorcycle(int intensity,string name) { If(intensity>10) { Intensity = 10; } driverIntensity = intensity; driverName = name; } …… } 需要理解的是,使用this關鍵字串聯構造函數不是強制的。但如果使用這項技術,類定義就會更容易維護、更簡明。再說一次,使用這項技術可以簡化編程任務,因為真正的工作都交給了一個構造函數來做,而其他構造函數只是在“踢皮球”。?
from:?http://blog.csdn.net/cyh_24/article/details/7747995
from:?http://blog.csdn.net/cyh_24/article/details/7747995
總結
以上是生活随笔為你收集整理的关于C# this 指针的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大学生如何进化到程序猿
- 下一篇: c# char unsigned_dll