2011-04-19 74 views
0

通過拖放到窗體中創建控件(圖片框,按鈕,文本框等)與在代碼中動態創建控件之間的性能,內存使用等方面是否存在差異爲C#或C + +的ASP.NET?親們喜歡哪種方法?動態創建控件vs拖放

+0

我相信動態創作更加昂貴。 – 2011-04-19 13:02:30

回答

1

通常,專業人士通過編寫代碼來設計表單。但是在運行時或編譯時所需的控制實際上取決於情況或需要。因此,在這兩種方法之間沒有任何性能方面。

通常初學者應該通過在表單上對控件進行拖放和放置來設計表單,並且應該觀察生成的代碼。

+0

我喜歡所有的答案。但是這個你說的「並且應該觀察生成的代碼」。我需要同時使用拖放和手動創建控件。通過查看「生成的代碼」,我能夠理解如何...... – user523234 2011-04-21 14:12:35

1

Visual Studio中的「拖放」只是爲您創建代碼。由此產生的可執行文件是由代碼構建而成的,編譯器不關心代碼是由您個人,Visual Studio還是由受過訓練的猴子編寫的。

是的,Visual Studio中的圖形設計師可能會向HTML/ASP元素添加額外的屬性,而這些屬性是您自己不會添加的,但我懷疑它會對w.r.t產生可衡量的差異。性能。

有經驗的開發者通常喜歡任

  • 手工工藝他們的代碼或
  • 使用圖形設計器並仔細檢查所創建的代碼(下稱「分屏」視圖是非常有用爲該)

因爲不必要的屬性使代碼難以維護。

2

當您拖放時,Visual Studio中的Designer實際上會爲您生成代碼,因此性能完全相同。除非您有需要,否則我不會推薦動態地進行此操作。

1

定義「動態」。

  • 如果通過「動態」指您手動編寫標記並手動聲明控件並接線事件,則不存在運行時性能差異。假設你手動創建了正確的東西,編譯結果是一樣的。 (甚至可以通過手動創建儘可能少的功能來稍微提高性能來完成工作,但這很少見,因爲編譯器非常擅長優化事情,我甚至不能真正想到關閉)但是,基本上,手動創建代碼並讓Visual Studio創建代碼都會生成相同的輸出。
  • 如果通過「動態」指您在運行時實例化控件並在運行時連接它,則可能會導致性能下降。該框架在保持效率方面又是非常好的。如果你有所反思,那麼你可能會減慢一點。但是總的來說,除非你試圖在創建對象時非常聰明,或者正在談論幾毫秒加起來的高度活躍的網站,否則沒有什麼重大的成就。
1

就我所瞭解的內存或性能而言,沒有區別,但存在差異。例如,非動態控件(您引用的拖放)在Page.Init中實例化,而您動態添加的控件可能來自按鈕單擊,Page.Load等。

只是意識到初始化的差異,以及如何ViewState is handled for dynamic controls