2011-04-19 77 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