Mar*_*ill 5 c# visual-studio winforms
当您创建表单或用户控件时,WinForms设计器生成一个如下所示的dispose方法:
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
Run Code Online (Sandbox Code Playgroud)
此代码的问题在于,如果编辑它以处理其他对象,则可能导致错误的行为.我见过带有dispose方法的.designer.cs文件,如下所示:
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
if (_myDisposable != null)
_myDisposable.Dispose();
if (_myOtherDisposable != null)
_myOtherDisposable.Dispose();
}
base.Dispose(disposing);
}
Run Code Online (Sandbox Code Playgroud)
...这是不正确的,因为_myDisposable和_myOtherDisposable的处理不应该取决于组件是否为空.
所以,忽略关于编辑这个设计器生成的代码是否是一个好习惯的争论,并忽略了你可以通过编辑模板来改变它的事实,我的问题是:为什么设计师不会生成看起来更像的代码这个?
protected override void Dispose(bool disposing)
{
if (disposing)
{
if(components != null)
components.Dispose();
}
base.Dispose(disposing);
}
Run Code Online (Sandbox Code Playgroud)
此代码具有相同的最终结果,但更安全且在修改期间不易出错.
答案是:因为您的方便不是 Microsoft 编写此功能的人的主要关注点。或者,他们可能认为您作为非 Microsoft 员工,不可能成为一名优秀的程序员,因此,您可能应该远离诸如修改对象的 Dispose() 方法之类的风险业务。
顺便说一下,Dispose() 方法位于 .Designer.cs 文件中指定为“不要编辑此设计器生成的代码”的区域之外,所以我认为可以编辑它。
| 归档时间: |
|
| 查看次数: |
869 次 |
| 最近记录: |