|
|
1
12
既然投机是浪费时间,我就拿了一份 Reflector 并查看了实际的代码。Parent属性调用ParentInternal属性,后者反过来调用 value.controls.add(此)
基于此代码,这些方法是等效的,这是一个严格的偏好问题。 |
|
|
2
3
如果您正在编写一个应用程序,它在运行期间打开和关闭许多表单,那么我可以看到按钮处理在哪里可能是一个问题。您需要确保手头有一些适当的处理代码,以确保应用程序不会占用太多内存。 除此之外,我喜欢第一个语句,因为它更清楚地解释了代码在做什么。您正在创建一个新按钮,并将其添加到页面上现有的控件中。在调试/重构时,您可以直接阅读以上内容,并了解正在发生的事情。在第二组代码中,这一点稍显模糊。如果刷过初始按钮声明并看到btn.parent=此语句,则可能会导致您认为正在将按钮重新分配给新表单,或者为此目的进行了某些操作。 这听起来确实有点挑剔,但最近我通过向一些同事展示我的一些代码来帮助他们,我开始发现,虽然给一只猫剥皮的方法肯定不止一种,但有时也有某种剥皮的方法,这在将来看东西时能更好地解释自己。 |
|
|
3
3
我一直倾向于确定要将新控件添加到哪个对象的控件…
我觉得这更容易阅读,你不必做任何家庭树分析来找出谁是父母… 我相信在内部使用.parent代码可以实现.controls.add,因此它们应该有相同的最终结果,但对我来说,归根结底是代码可读性。 这里有一个类似的问题 StackOverflow . |
|
|
4
1
在第二种情况下,当窗体释放时,控件可能不会被释放(我不确定它是否释放),但无论如何,它应该在下一轮垃圾收集中释放,因为处理完窗体后不应该有任何硬引用。其结果是,对于大多数应用程序来说,按钮是否随表单一起被释放是一个没有问题的问题。在绝大多数使用表单的应用程序中,用户是瓶颈,因此,在处理表单控件集合之前,是否必须等待一个或两个垃圾收集器传递,不应影响您的设计决策。 我宁愿这样说
因为它在语义上更适合你实际所做的。我总是使用这种方法,而不是设置 家长控制 财产。 |
|
|
5
0
这是一个真正的品味问题。下面是当你设置
|
|
|
6
-1
我认为两者的结果是一样的 |
|
|
7
-1
我个人喜欢
因为,它是更明确和可读的代码。 |