首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Effective C# 原則 14:使用建構函式鏈結(一)

     編輯:關於C語言

避免重複程式碼:建構函式鏈結

撰寫建構函式是重複性工作。許多開發人員先寫一個建構函式,再複製貼上到其他建構函式滿足多載介面。請停止這樣做。有經驗的 C++ 程式設計師可能用私有輔助方法放置共用演算法。也請停止。當發現多個建構函式包含相同邏輯,應將邏輯放入一個共用建構函式。可避免程式碼重複,且建構函式初始化比其他程式碼執行更有效率。C# 編譯器識別建構函式初始化為特殊語法,移除預置方法中重複變數與基類建構函式呼叫。結果:物件以最少程式碼合理初始化。你也能寫最少程式碼將責任委派給共用建構函式。

簡單範例

public class MyClass
{
    private ArrayList _coll;
    private string _name;
    public MyClass() : this(0, "") { }
    public MyClass(int initialCount) : this(initialCount, "") { }
    public MyClass(int initialCount, string name)
    {
        _coll = (initialCount > 0) ? new ArrayList(initialCount) : new ArrayList();
        _name = name;
    }
}

C# 不支援預設參數值

C++ 以預設參數值妥善解決此問題(減少函式多載)。C# 必須重寫每個特定建構函式,意味著大量重複工作。使用建構函式鏈結取代常規方法。以下為常規低效率建構函式邏輯:

public class MyClass
{
    private ArrayList _coll;
    private string _name;
    public MyClass() { commonConstructor(0, ""); }
    public MyClass(int initialCount) { commonConstructor(initialCount, ""); }
    public MyClass(int initialCount, string Name) { commonConstructor(initialCount, Name); }
    private void commonConstructor(int count, string name)
    {
        _coll = (count > 0) ? new ArrayList(count) : new ArrayList();
        _name = name;
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved