추천, 2024

에디터의 선택

C #에서 dispose ()와 finalize () 사이의 차이점

메소드 dispose () 및 finalize ()는 객체가 보유하는 관리되지 않는 리소스를 해제하기 위해 호출되는 C #의 메소드입니다. dispose () 메서드는 IDisposable 인터페이스 내부에 정의되어 있지만 finalize () 메서드는 클래스 객체 내에 정의되어 있습니다. dispose ()와 finalize ()의 가장 큰 차이점은 사용자가 명시 적으로 dispose () 메서드를 호출해야하지만 개체가 파기되기 전에 finalize () 메서드가 가비지 수집기에서 호출된다는 것입니다. 아래에 나와있는 비교 차트를 사용하여 다른 차이점을 알아 보도록하겠습니다.

비교 차트

비교의 근거처분하다 ()finalize ()
한정된메소드 dispose ()는 인터페이스 IDisposable 인터페이스에 정의됩니다.java.lang.object 클래스에 정의 된 finalize () 메소드 ID입니다.
통사론public void Dispose () {
// 여기에서 코드를 삭제하십시오.
}
protected void finalize () {
// 여기서 파이널화 코드
}
호출 됨메소드 dispose ()는 사용자가 호출합니다.finalize () 메소드는 가비지 컬렉터에 의해 호출됩니다.
목적dispose () 메서드는 관리되지 않는 리소스가 호출 될 때마다 해제하는 데 사용됩니다.finalize () 메서드는 객체가 삭제되기 전에 관리되지 않는 리소스를 해제하는 데 사용됩니다.
이행메소드 dispose ()는 close () 메소드가있을 때마다 구현됩니다.finalize () 메소드는 관리되지 않는 리소스에 대해 구현됩니다.
액세스 지정자메소드 dispose ()는 public으로 선언됩니다.finalize () 메소드는 private로 선언됩니다.
동작dispose () 메소드는 더 빠르고 객체를 즉시 삭제합니다.메서드를 완료하는 것은 처리하는 것보다 느립니다.
공연메서드 disposes ()는 즉각적인 동작을 수행하므로 웹 사이트의 성능에는 영향을 미치지 않습니다.finalize () 메소드가 느려지면 웹 사이트의 성능에 영향을 미칩니다.

dispose ()의 정의

dispose () 메서드는 클래스의 객체가 보유하는 관리되지 않는 리소스를 해제합니다. 관리되지 않는 리소스는 파일, 데이터 연결 등입니다. dispose () 메서드는 IDisposeable 인터페이스에서 선언되며 IDisposable 인터페이스를 구현하여 클래스에서 구현됩니다. 이 메소드는 자동으로 호출되지 않습니다. 프로그래머는 다른 사용자가 사용할 사용자 정의 클래스를 만들 때 수동으로 구현해야합니다. 이 메소드의 구문은 다음과 같습니다.

 public void dispose () {// 여기에서 코드 삭제} 

위의 구문에서 메서드가 public으로 선언 된 것을 볼 수 있습니다. 이 메소드는 IDisposable 인터페이스에 정의되어 있으며이 인터페이스를 구현하는 클래스에 의해 구현되어야하기 때문입니다. 따라서 구현 클래스에 대한 액세스 가능성을 제공하기 위해 메서드는 public으로 선언됩니다.

이 메소드는 호출하도록 구현 된대로 프로그램의 코드에 의해 수동으로 호출됩니다. 메소드의 성능은 빠르며 클래스의 객체가 보유한 자원을 즉시 해제합니다.

finalize ()의 정의

finalize () 메서드는 객체 클래스에 정의되어 있습니다. 이는 정리 활동에 사용됩니다. 이 메소드는 객체 참조가 오랫동안 사용되지 않을 때 가비지 수집기에 의해 호출됩니다. 가비지 수집기는 관리되는 리소스를 자동으로 해제하지만 파일 핸들, 데이터 연결 등과 같은 관리되지 않는 리소스를 해제하려는 경우 수동으로 finalize 메서드를 구현해야합니다. 가비지 컬렉터는 객체를 완전히 파괴하기 직전에 finalize () 메서드를 호출합니다.

finalize () 메소드의 구문 :

 protected void finalize () {// 최종화 코드} 

위의 구문에서 finalize () 메서드는 protected로 선언됩니다. 그 이유는 finalize () 메서드가 클래스 외부에서 액세스 할 수 없으며 가비지 수집기에서만 액세스 할 수 있어야하기 때문입니다.

finalize () 메서드는 메모리를 즉시 해제하지 않으므로 성능 비용에 영향을줍니다. C #에서 finalize 메서드는 소멸자와 함께 자동으로 호출됩니다.

주요 차이점 dispose () 및 finalize ()

  1. 메소드 dispose ()는 인터페이스 IDisposable에 정의됩니다. 한편 finalize () 메서드는 클래스 객체에 정의되어 있습니다.
  2. 프로그래머가 코드 내에서 dispose () 메서드를 수동으로 호출해야하며, finalize 메서드는 가비지 수집기에서 개체를 제거하기 전에 자동으로 호출됩니다.
  3. 메서드 dispose는 언제든지 호출 할 수 있지만 메서드 finalize는 해당 개체가 오랫동안 참조되지 않았 음을 알 때 가비지 수집기에서 호출합니다.
  4. 메소드 dispose ()는 IDisposable 인터페이스를 구현 한 후 클래스에 구현됩니다. 관리되는 리소스가 가비지 수집기에 의해 자동으로 해제되므로 finalize () 메서드는 관리되지 않는 리소스에 대해서만 구현해야합니다.
  5. 메소드 dispose ()의 액세스 지정자는 인터페이스 IDisposable에 정의되어 있으므로 public이며이 인터페이스를 구현하는 클래스에 의해 구현되므로 공용이어야합니다. 한편 finalize () 메서드는 액세스 지정자를 보호하므로 클래스 외부의 멤버가 액세스 할 수 없어야합니다.
  6. dispose () 메서드는 빠르며 객체를 즉시 해제하므로 성능 비용에 영향을 미치지 않습니다. finalize () 메서드는 느리고 개체가 보유한 리소스를 즉시 해제하지 않습니다.

결론:

finalize보다 빠르기 때문에 finalize () 메서드에 dispose () 메서드를 사용하는 것이 좋습니다. 또한 필요할 때 언제든지 호출 할 수 있습니다.

Top