请问我能够override一个Dispose()函数吗?

dongcat111 2004-12-03 09:02:21
下载了一个微软的开发包,其中的一个Sample程序使用了如下代码:
public override void Dispose()
结果编译的时候就提示:
无法重写继承成员“System.ComponentModel.Component.Dispose()”,因为它未标记为 virtual、abstract 或 override
然后我去掉了override变成:public void Dispose()
这次编译提示warning:
要求关键字 new,因为它隐藏了继承成员“System.ComponentModel.Component.Dispose()”

程序可以运行了,但我总是不放心,按道理能发布为Sample的程序是不会有低级错误的,是不是我忽略了什么地方?
...全文
170 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
陈亚平 2004-12-03
  • 打赏
  • 举报
回复
using System.ComponentModel;
试试..
Bmonkey 2004-12-03
  • 打赏
  • 举报
回复
说错了,是重写
Bmonkey 2004-12-03
  • 打赏
  • 举报
回复
它有两个Dispose函数;只有带参数的这个void Dispose(bool disposing),才可以被继承。
Bmonkey 2004-12-03
  • 打赏
  • 举报
回复
这是msdn的错误!请阅读下面的内容:


Here is a Question about MSDN's dispose() : http://blog.mvpcn.net/cuike519/archive/2004/09/04/3579.aspx

about that dispose() method , I think it' s:

public class SimpleControl: System.Web.UI.Control
{
public override void Dispose()
{
base.Dispose ();
}
}
it has no error
but if you derive from System.ComponentModel.Component ,it has two Dispose() method
void Dispose()
void Dispose(bool disposing)

ms has approved it's msdn 's error .
only second can be overrided
so right is :

[c#]
public void Dispose();
protected virtual void Dispose(bool disposing);

[vb.net]
Public Sub Dispose()
Protected Overridable Sub Dispose(ByVal disposing As Boolean)


dongcat111 2004-12-03
  • 打赏
  • 举报
回复
我的工程有两个命名空间,是不是在namespace A里面用namespace B的时候直接在开头using B;就可以了?那我应该没有少引用什么东西啊
Pipiloo 2004-12-03
  • 打赏
  • 举报
回复
samples中应该不是重写 System.ComponentModel.Component.Dispose(),是不是少引用了什么东西?
wangxt 2004-12-03
  • 打赏
  • 举报
回复
帮你顶

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧