이 질문에 대한 답변을 찾을 수 없습니다.XmlNodeList를 일회용으로 사용하는 이유는 무엇입니까?
호기심에서 벗어나서 왜 XmlNodeList class은 .NET 4.5에서 IDisposable을 구현합니까? 이전 버전에서는 없었습니다.
이 질문에 대한 답변을 찾을 수 없습니다.XmlNodeList를 일회용으로 사용하는 이유는 무엇입니까?
호기심에서 벗어나서 왜 XmlNodeList class은 .NET 4.5에서 IDisposable을 구현합니까? 이전 버전에서는 없었습니다.
IEnumerator<T>
이 IDisposable
하지만 IEnumerator
하지 않는 구현하는 것과 같은 이유로 대부분의 경우 - 이전 버전이 작성된 전에 하나는 A 구현 정리를해야 할 상황을 생각 저자하지만 공장은 이러한 구현인지는 몰라도 반환 그러한 필요에 대해. 예를 들어, 클래스는 파일 이름을 수락하고 해당 파일에서 "라이브"XmlNodeList
을 제공 할 수 있습니다. XmlList
의 IDisposable.Dispose
메서드는 기본 파일을 닫습니다. 더 빨리이기 때문에, 그 것은 아마도 IDisposable
자체를 구현해야한다
IDisposable asDispos = thing as IDisposable;
if (asDispos != null)
asDispos.Dispose();
과 그렇지 않은, 많은 경우 : 인터페이스 또는 추상 클래스의 사용자의 상당 부분은 다음과 같은 코드를 사용해야하는 경우 IDisposable.Dispose
을 구현할 수도 있고 구현하지 않을 수도있는 클래스를 캐스팅하려고 시도하는 것보다 IDisposable
을 구현하는 것으로 알려진 클래스에서 무조건 IDisposable.Dispose
을 호출 할 수 있습니다.
디 컴파일 된 코드를 살펴보면 부모 문서가 변경되면 실행되는 이벤트의 등록을 취소하는 것과 관련이있는 것으로 보입니다. 그러나 나는 이벤트 처리기가 정확히 무엇을하는지, 왜 (호출 된 메서드가'ConcurrencyCheck()'인지)를 이해할 수 없었다. – svick
4.0 버전에서 컴파일되었지만 4.5 버전에서 실행되는 기존 제품의 성능 문제가 큰 것으로 나타났습니다. Uncollected XmlNodeLists는 파이널 라이저 큐에서 끝났습니다. IDisposable에 부드러운 캐스트가 유일한 합리적인 수정 인 것으로 보입니다. –