ในชั้นเรียนของฉันฉันใช้ 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 Implement IDisposable อย่างถูกต้องจัดให้มีการใช้งาน Disrid (bool) overridable ใน 'ผู้ใช้' หรือทำเครื่องหมายประเภทเป็นปิดผนึก การเรียกใช้การกำจัด (false) ควรล้างทรัพยากรดั้งเดิมเท่านั้น การเรียกร้องให้จัดการ (จริง) ควรล้างทรัพยากรที่มีการจัดการและดั้งเดิม stman User.cs 10
สำหรับการอ้างอิง: CA1063: ใช้ IDisposable อย่างถูกต้อง
ฉันได้อ่านหน้านี้แล้ว แต่ฉันเกรงว่าฉันไม่เข้าใจจริงๆว่าต้องทำอะไรที่นี่
หากทุกคนสามารถอธิบายได้ในแง่ของปัญหาที่เกิดขึ้นและ / หรือวิธีการที่ IDisposable ควรนำมาใช้นั่นจะช่วยได้จริงๆ!
IDispoable
หากคุณมีทรัพยากรที่ไม่มีการจัดการในการกำจัด (ซึ่งรวมถึงทรัพยากรที่ไม่มีการจัดการที่ถูกห่อ ( SqlConnection
, FileStream
ฯลฯ )) คุณไม่ควรและไม่ควรนำไปใช้IDisposable
หากคุณมีทรัพยากรที่มีการจัดการเช่นที่นี่นี่คือ IMO ปัญหาสำคัญกับการวิเคราะห์รหัสเป็นเรื่องที่ดีมากในการตรวจสอบกฎเล็ก ๆ น้อย ๆ ที่โง่ แต่ไม่เก่งในการตรวจสอบข้อผิดพลาดทางแนวคิด
Dispose
?