在我的课堂上,我按照以下方式实现IDisposable
:
public class User : IDisposable
{
public int id { get; protected set; }
public string name { get; protected set; }
public string pass { get; protected set; }
public User(int UserID)
{
id = UserID;
}
public User(string Username, string Password)
{
name = Username;
pass = Password;
}
// Other functions go here...
public void Dispose()
{
// Clear all property values that maybe have been set
// when the class was instantiated
id = 0;
name = String.Empty;
pass = String.Empty;
}
}
在VS2012中,我的代码分析指出要正确实现IDisposable,但我不确定我在这里做错了什么。确切的文本如下: CA1063 实现 IDisposable 时应正确 提供 'User' 上可重写的 Dispose(bool) 实现或将类型标记为 sealed。调用 Dispose(false) 应只清理托管资源。调用 Dispose(true) 应同时清理托管和非托管资源。stman User.cs 10 参考:CA1063:正确实现 IDisposable 我已经阅读了这个页面,但恐怕我真的不明白需要在这里做什么。 如果有人能更通俗易懂地解释问题和/或如何实现IDisposable,那将真正有帮助!
Dispose
方法里面就只有这些代码吗? - Claudio RediSqlConnection
、FileStream
等),才需要实现IDisposable
接口。如果只有托管资源,就不需要也不应该实现IDisposable
接口。我认为这是代码分析中的一个主要问题。它非常擅长检查愚蠢的小规则,但并不擅长检查概念上的错误。 - jason