C#의 분석 함수
분석 함수는 클래스의 특수한 구성원 함수로 클래스의 대상이 범위를 초과할 때 실행된다.간단하게 말하자면, 분석 함수는 우리가 폐기 대상의 메모리 회수를 돕는 메커니즘이다.
구문:
~ ()
{
}
예:
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.
*/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.