2013-02-19 2 views
-1

이 클래스 MustDispose.cs클래스 객체는

public class MustDispose 
{ 
    public MustDispose() 
    { 

    } 
} 

in.aspx 페이지

protected void Page_Load(object sender, EventArgs e) 
    {   
     using (MustDispose obj = new MustDispose) 
     { 
      // use the object 
     } 
    } 

errorr

소멸자를 만들기 C#에서 사용하여 만들고 object.Finalize 직접 호출 할 수 없습니다. 가능한 경우 IDisposable.Dispose를 호출하는 을 고려하십시오.

+0

질문이 명확하지 않습니다하지만 난'IDisposable' 그래서'확실히()'캔트 액세스'폐기()' – sll

+0

을 사용하여 문제가 당신이 구현되지 않아도된다는 것입니다 가정처럼

using (var obj = new TestDispose()) { ... } 

인가 너 자신이 이것을 5 분만 연구했다면 이걸 알아 냈을 까? –

답변

0

등급은 이며, using 문 내부에 사용되어야합니다.

예 :

public class MustDispose : IDisposable 
{ 
    public MustDispose() 
    { 

    } 

    //implement Dispose 
    public void Dispose() 
    { 
     .... 
    } 
} 

using에서 읽기 :

는 는 IDisposable 개체의 올바른 사용을 보장하는 편리한 구문을 제공합니다.

0

은 당신과 같이 IDisposable를 구현해야합니다

class TestDispose : IDisposable 
{ 
    public TestDispose() 
    { 
     ... 
    } 

    public void Dispose() 
    { 
     // dispose of your resources here 
    } 
} 

는 그런 다음 자동으로 블록의 끝에서 obj.Dispose를 호출하는 using 블록에서 사용할 수 있습니다.

var obj = new TestDispose(); 

try 
{ 

    ... 
} 
finally 
{ 
    obj.Dispose(); 
} 
+0

'using'은'Dispose'를 호출하는 것과 완전히 같지 않습니다. 설명에'obj'를 작성한 후에 예외가 발생하면 어떻게됩니까? –

+0

좋은 캐치가 더 정확한 표현으로 업데이트되었습니다. 동의하니? –