나는 코드 러시와 리팩토링 프로 (ReSharper와 같은 가능한 코드 문제 등을 강조 표시)를 사용하고 있으며, 사람들에게 알려지지 않은 지역민 (IDisposable 구현)이 있다는 말을 들었습니다. 이 솔루션에서 분명히.NET IDisposable 인라인 temps
using (Reports.StudentRegisters.StudentQueriesDataTable studentDataTable = new Reports.StudentRegisters.StudentQueriesDataTable())
{
try
{
(new StudentQueriesTableAdapter()).FillByQAbsenceRegRow(studentDataTable, year, school, division, progArea, sinceWeek, missedLessons, includeWdlTrn, ageMin, ageMax, studentGLH);
ds = new DataSet();
ds.Tables.Add((DataTable)studentDataTable);
ReportDocument.SetDataSource(ds.Tables[0]);
}
catch (Exception err)
{
LogReportError(err, this.CrystalViewer, null, ErrorType.Reporting);
}
}
지금 방법으로이 없다 : 라인 아래처럼 내가 할 수있는 일단 studentTableAdapter가 사용되기 때문에
using (Reports.StudentRegisters.StudentQueriesDataTable studentDataTable = new Reports.StudentRegisters.StudentQueriesDataTable())
{
using (StudentQueriesTableAdapter studentTableAdapter = new StudentQueriesTableAdapter())
{
try
{
studentTableAdapter.FillByQAbsenceRegRow(studentDataTable, year, school, division, progArea, sinceWeek, missedLessons, includeWdlTrn, ageMin, ageMax, studentGLH);
ds = new DataSet();
ds.Tables.Add((DataTable)studentDataTable);
ReportDocument.SetDataSource(ds.Tables[0]);
}
catch (Exception err)
{
LogReportError(err, this.CrystalViewer, null, ErrorType.Reporting);
}
}
}
: 그래서 두 using 문에이에 코드를 변경 StudentQueriesTableAdapter에서 dispose를 호출하십시오. 더 이상 객체에 대한 참조가 없거나 잠재적으로 적절하게 배치되지 않은 객체를 남겨 둘 수 있으므로이 객체가 자동으로 호출됩니다.
나는 실제로 두 객체에서 처리해야하는지 여부에 관심이 없다는 것을 강조 할 것이며, 일부는 구현하고 실제로는 필요하지는 않습니다. (항상 수행해야하지만). 나는 그것이 특별히 부름 받았는지에 관심이있다.
나는 두껍게 보이게하는 기술을 사용하여 더블을 좋아합니다. 중첩은 원래 코드 레이아웃이 마음에 들지 않는 주된 이유입니다. – PeteT
그래, 여분의 들여 쓰기를 피하기 위해 중첩 된'using' 블록을 포맷하는 관용적 방법입니다. –