这里我在aspx.cs中使用了dispose方法,但我不确定处理对象的方式是否以正确的方式完成。 Obvisoly我从网上冲浪并在我的代码中使用它,你可以说,对象是以正确的格式处理。
这是我在aspx.cs中的方法
public List<CausesField> list(DataTable dt)
{
List<CausesField> lst = new List<CausesField>();
foreach (DataRow row in dt.Rows)
{
using (CausesField SignUpDetails = new CausesField())
{
SignUpDetails.FirstName = row["FirstName"].ToString();
SignUpDetails.LastName = row["LastName"].ToString();
SignUpDetails.Birthdate = row["BirthDay"].ToString();
SignUpDetails.Gender = row["Gender"].ToString();
lst.Add(SignUpDetails);
SignUpDetails.Dispose();
}
}
return lst;
}
我的班级档案:
public class CausesField:IDisposable
{
public string FirstName { get; set; } public string LastName { get; set; }
public string Birthdate { get; set; } public string Gender { get; set; }
private Component component = new Component();
private bool disposed = false;
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
private void Dispose(bool disposing)
{
// Check to see if Dispose has already been called.
if (!this.disposed)
{
// If disposing equals true, dispose all managed
// and unmanaged resources.
if (disposing)
{
// Dispose managed resources.
component.Dispose();
}
}
disposed = true;
}
}
答案 0 :(得分:3)
使用“using”语句时不需要处置实例。提供给using
语句的对象实现了IDisposable接口,以便在finally块中调用dispose()
方法。
您的上述using (CausesField SignUpDetails = new CausesField())
语句将等同于以下代码:
CausesField SignUpDetails = new CausesField();
try
{
//To do code here
}
finally
{
if(SignUpDetails!=null)
{
SignUpDetails.Dispose();
}
}
答案 1 :(得分:3)
using
语句会在块结束时自动调用Dispose
,因此您不应再自行调用它。
另外,一般情况下,除非你持有一些外部资源(锁,文件句柄,套接字,数据库连接等)或非托管内存(我怀疑你的情况就是如此),你不应该有一个终结器或Dispose
方法。垃圾收集器负责释放托管内存。