C#의 분석 함수

1812 단어
정의:
분석 함수는 클래스의 특수한 구성원 함수로 클래스의 대상이 범위를 초과할 때 실행된다.간단하게 말하자면, 분석 함수는 우리가 폐기 대상의 메모리 회수를 돕는 메커니즘이다.
구문:
    ~ ()
    {

    }

예:
class Car 
{ 
       ~Car() // 
       {
//.......
       }
}

참고 사항:
1. 클래스에 대해서만 분석 함수를 사용할 수 있다.2. 하나의 클래스에는 하나의 분석 함수만 있을 수 있다.3. 분석 함수를 상속하거나 다시 불러올 수 없습니다.4. 분석 함수를 호출할 수 없습니다.그것들은 자동으로 호출된 것이다.5. 분석 함수에는 수식자도 없고 매개 변수도 없다.6. 공석 함수를 사용해서는 안 된다.만약 분석 함수가 비어 있다면 불필요한 성능 손실을 초래할 뿐이다.
역할:
프로그래머는 쓰레기 수거기가 결정하기 때문에 분석 함수를 언제 호출할지 제어할 수 없습니다.스팸 수거기는 응용 프로그램이 더 이상 사용하지 않는 대상이 있는지 검사합니다.쓰레기 수거기가 어떤 대상이 분석에 부합한다고 생각하면, 분석 함수를 호출하여 이 대상을 저장하는 메모리를 회수합니다.프로그램이 종료될 때도 분석 함수를 호출합니다.C#은 일반적으로 스팸 수거가 수행되지 않는 개발 언어에 비해 메모리 관리가 많이 필요하지 않습니다.왜냐하면.NET Framework 스팸 수거기는 객체의 메모리 할당 및 방출을 암시적으로 관리합니다.그러나 프로그램이 창, 파일, 네트워크와 같은 비 트랜잭션 자원을 봉인할 때, 분석 함수를 사용하여 이 자원을 방출해야 한다.대상이 분석에 부합할 때 쓰레기 수거기는 대상의 Finalize 방법을 실행합니다.
계승 체인 중 분석 함수의 방출 순서
        class First
        {
            ~First()
            {
                Console.WriteLine("First's destructor is called.");
            }
        }

        class Second : First
        {
            ~Second()
            {
                Console.WriteLine("Second's destructor is called.");
            }
        }

        class Third : Second
        {
            ~Third()
            {
               Console.WriteLine("Third's destructor is called.");
            }
        }

        class TestDestructors
        {
            static void Main()
            {
                Third t = new Third();
            }

        }
        /* Output :
            Third's destructor is called.
            Second's destructor is called.
            First's destructor is called.
        */

좋은 웹페이지 즐겨찾기