簡體   English   中英

C#關於表單元素生成性能

[英]C# Regarding Form Element Generation Performance

我目前正在使用語法生成我的表單元素,並在啟動時獲取所有內容。 我想知道這樣做是否可以提高性能? 我只是不喜歡在源代碼中使用編輯器的那種feeling腫的感覺。

我的意思是,基本上,如果要使用編輯器,則需要為我的項目設置此設置:3個面板x 44個圖標圖像和文本元素。 就像在我的代碼中一樣,我可以使用循環來生成所有元素,因為除了源或值外,屬性沒有太多差異。

不,您所做的沒有優勢。 事實上,在一條路上,你在做什么是高性能。

例如,假設您的表單上有十個文本框,每個文本框中都包含文本“ 1”到“ 10”。 表單的設計器代碼如下所示:

textBox1 = new TextBox();
textBox1.Text = "1";
Controls.Add(textBox1);
textBox2 = new TextBox();
textBox2.Text = "2";
Controls.Add(textBox2);
textBox3 = new TextBox();
textBox3.Text = "3";
Controls.Add(textBox3);
textBox4 = new TextBox();
textBox4.Text = "4";
Controls.Add(textBox4);
textBox5 = new TextBox();
textBox5.Text = "5";
Controls.Add(textBox5);
textBox6 = new TextBox();
textBox6.Text = "6";
Controls.Add(textBox6);
textBox7 = new TextBox();
textBox7.Text = "7";
Controls.Add(textBox7);
textBox8 = new TextBox();
textBox8.Text = "8";
Controls.Add(textBox8);
textBox9 = new TextBox();
textBox9.Text = "9";
Controls.Add(textBox9);
textBox10 = new TextBox();
textBox10.Text = "10";
Controls.Add(textBox10);

(實際上,它會被分解,因為實例化,初始化和添加通常位於不同的位置,但這出於說明目的是可以的)。

現在,這很冗長。 但是,由於沒有人在編寫(或理想情況下是在讀取 )它,因此生成的代碼中的純詳細程度通常並不重要。 當然,除非它會妨礙性能,但是我要明白這一點。

使用您的方法,您(正確地)使用了一個循環,因為這段代碼是重復性很強的,只是希望看起來更加簡潔。 就像是...

for(int i = 1; i <= 10; i++)
{
    TextBox box = new TextBox();

    box.Text = i.ToString();

    Controls.Add(box);
}

當然更具可讀性。 但是,讓我們看一下運行時實際上對每種方法中的每個文本框所做的工作。

首先,它執行以下操作:

  • 實例化一個新的TextBox
  • Text屬性設置為字符串文字
  • 添加到Controls集合

在第二個中,它必須這樣做:

  • 遞增整數變量
  • 比較終端條件
  • 實例化一個TextBox
  • 將整數轉換為字符串
  • 將此中間字符串分配給Text屬性
  • 添加到Controls集合

現在,額外的工作是否很重要? 否。您是否會注意到從其他工作中獲得的如此輕微的表現? 如果這樣做,則需要一台新計算機。 但是您的問題是您的方法是否具有更好的性能,答案是“否”。

您將無法擺脫困境,您會失去設計面,不僅對您自己,而且對您現在或將來的同事也如此。

我將為重復的ui創建用戶控件,然后您將獲得設計圖面,更少的東西以及一些封裝和潛在的重用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM