我有一個WinForms應用程序會與下面的構造函數:優化構造函數重載在C#
public Form1()
{
InitializeComponent();
//Code that enables/disables buttons etc
}
public Form1(int ID)
{
searchByID = ID;
InitializeComponent();
//Code that enables/disables buttons etc
}
哪一個被choosen?這取決於程序是否由CMD啓動並添加了一個參數。這是主要的,檢查的是:
static void Main(string[] args)
{
//Args will be the ID passed by a CMD-startprocess (if it's started by cmd of course
if (args.Length == 0)
{
Application.Run(new Form1());
}
else if(args.Length>0)
{
string resultString = Regex.Match(args[0], @"\d+").Value;
incidentID = Int32.Parse(resultString);
try
{
Application.Run(new Form1(incidentID));
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
}
}
我的問題是:
如何優化的建設者?它們都含有約30線一樣好一樣的代碼,我想這樣做來解決這個問題:
public Form1()
{
Form1(0)
}
public Form1(int ID)
{
if (ID>0)
{
//it has an ID
}else
{
doesn't have an ID
}
}
但是這給我的錯誤:
Non-invocable member cannot be used like a method.
我如何優化呢?
這裏的關鍵字是」鏈接「而不是」重載「 –
嘗試在構造函數中儘可能少的邏輯。除分配變量外,其他任何邏輯都不能接受。 –
謝謝班德。我的構造函數中沒有邏輯。只有鏈接事件處理程序,隱藏/顯示按鈕等,我會認爲這是正確的 –