반드시 그렇지는 않습니다. 정적 멤버는 CLR이 Type
개체로 유지하는 클래스 자체에 속합니다. 정적 멤버가 A
유형의 개체 인 경우 정적 멤버는 특정 인스턴스 A
을 가비지 수집 할 수 있습니다.
public class Example
{
// this particular instance of Example will not be collected
private static readonly Example Default = new Example();
public void Foo()
{
// this instance *can* be collected after Foo returns
Example anotherInstance = new Example();
}
}
이 문제는 반드시 싱글 아니지만 무국적 인 "기본"동작을 할 특정 클래스에 유용합니다. 내가 이것을 사용하는 한 가지 예가 ANTLR 4 프로젝트의 C# 런타임 라이브러리에있는 ParseTreeWalker.Default
필드입니다. 기본 동작이 필요한 경우 새 객체를 만들지 않고 해당 인스턴스를 사용할 수 있지만 직접 동작을 추가하려면 ParseTreeWalker
까지 확장되는 클래스의 인스턴스를 직접 만들 수도 있습니다.
테스트 케이스 제안을 위해 투표했습니다. 코드 예제를 사용할 수 있습니다. – Gusdor