C# 클래스의 인스턴스를 반복 할 수 있습니까? 이러한 인스턴스는 컬렉션에서 추적되거나 관리되지 않습니다.C# 클래스의 인스턴스를 반복하는 방법은 무엇입니까?
답변
정규 프레임 워크 안에 없습니다. 을 수동으로 추적하려면이 필요합니다.
그러나 windbg/sos에서이 작업을 수행 할 수 있습니다. 주로 디버깅 용도로 사용됩니다 (루틴 코드가 아님).
또는 프로파일 링 API를 사용할 수 있습니다 - http://msdn.microsoft.com/en-us/magazine/cc188781.aspx –
어딘가에 대한 참조가 있거나 최소한 어디에서 봐야하는지 알 필요가 있으므로 식별 할 때 반복 할 컬렉션에 넣을 수 있습니다.
참조가 어디에 있는지 잘 모르는 경우 일종의 추적 메커니즘을 도입해야합니다. 아마도 형식에 대한 정적 컬렉션입니까? 그것은 신중하게 구현해야 할 것입니다.
직접적으로.
개체를 개념적으로 잘 알려진 장소 (예 : 정적 컬렉션)에 배치 한 다음이를 반복하여 사용할 수는 있지만 그 다음에 인스턴스를 지워야합니다. 어떤 시점에서 수집하거나 그렇지 않으면 쓰레기 수거되지 않을거야.
아마도 WeakReference를 컬렉션에 사용하십시오. 그러나 어느 쪽이든, 나는 "이 인스턴스들은 컬렉션에서 추적되거나 관리되지 않습니다."라고 반대합니다. 질문에. –
마크 (Marc)가 말한 것처럼 코드에서 수행하려는 경우 해당 컬렉션을 유지해야합니다. 디버깅하는 경우 다음 블로그 게시물을 참조하십시오. http://blogs.msdn.com/tess/archive/2006/01/23/516139.aspx
특정 유형의 모든 객체 인스턴스를 메모리에 저장해야하는 경우 System.WeakRef의 컬렉션을 사용하는 것이 좋습니다. 약한 참조입니다. 참조하는 객체를 유지하지 않는 참조입니다. 이것은 열거하고자하는 객체 인스턴스에 weak-refs 콜렉션을 유지하게 해준다. 자세한 정보는 Weakrefs를보십시오.
댓글 스레드 on this post에는이 질문과 관련된 흥미로운 토론과 해결책이 있습니다.
- 1. 클래스의 인스턴스를 삭제하는 방법은 무엇입니까?
- 2. R.java 클래스의 id 속성을 반복하는 방법은 무엇입니까?
- 3. Resharper 템플릿을 반복하는 방법은 무엇입니까?
- 4. 목록을 반복하는 방법은 무엇입니까?
- 5. 클래스의 인스턴스를 만드는 다른 방법
- 6. 항상 클래스의 인스턴스를 만드시겠습니까?
- 7. 다른 메서드에서 클래스의 인스턴스를 만드는 방법
- 8. 클래스의 인스턴스를 반환하는 방법?
- 9. 변수를 반복하는 방법은 무엇입니까?
- 10. 레이아웃을 반복하는 방법은 무엇입니까?
- 11. 클래스의 새 인스턴스를 만들 때 C# StackOverFlowException
- 12. C#/WCF에서 클래스의 인스턴스를 만들고 있습니까?
- 13. C#은 어떻게 클래스의 인스턴스를 생성합니까?
- 14. Ruby에서 해시를 반복하는 방법은 무엇입니까?
- 15. 여러 배열을 반복하는 방법은 무엇입니까?
- 16. LuaBind : 클래스의 특정 인스턴스를 Lua에 바인딩하는 방법은 무엇입니까?
- 17. 열거 형을 반복하는 방법은 무엇입니까?
- 18. 클래스의 인스턴스를 얻는 방법
- 19. onSaveInstanceState에서 사용자 정의 클래스의 인스턴스를 저장하는 방법은 무엇입니까?
- 20. 비공개 멤버가 포함 된 클래스의 인스턴스를 serialize하는 방법은 무엇입니까?
- 21. 상속 문제입니다. 기본 클래스의 인스턴스를 여러 개 만드는 방법은 무엇입니까?
- 22. ActionScript 3에서 클래스의 인스턴스를 Class 객체로 가져 오는 방법은 무엇입니까?
- 23. Java에서 Generic 클래스의 인스턴스를 만드는 올바른 방법은 무엇입니까?
- 24. 해당 클래스 내에 클래스의 정적 인스턴스를 만드는 방법은 무엇입니까?
- 25. 파이썬에서 같은 클래스의 정의로 클래스의 인스턴스를 만듭니다.
- 26. CKeditor에서 인스턴스를 복제하는 방법은 무엇입니까?
- 27. jQuery에서 메뉴를 반복하는 방법은 무엇입니까?
- 28. 클래스 멤버를 반복하는 방법은 무엇입니까?
- 29. 그리드 행을 반복하는 방법은 무엇입니까?
- 30. 수정중인 목록을 반복하는 방법은 무엇입니까?
마크 업이 프레임 워크에서이 작업을 수행 할 수 없다는 것이 맞습니다. 누군가가이 작업을 수행하려는 횟수가 상당히 적어야한다고 생각합니다. 달성하고자하는 특정 항목이 있습니까? –
특별한 것은 없습니다. 열리는 양식은 두 가지 이름 중 하나를 사용할 수 있습니다 (양식의 특정 특성을 기반으로 함). 어쩌면 그건 불필요한 것이며 단일 양식 이름을 고수 할 것입니다. – Asaf
양식을 한 번만 열어 보려고하는 경우 - 아마도 뮤텍스를 사용할 수 있습니다. Form의 제목을 원하는대로 지정할 수 있으며, 뮤텍스가 이미 생성되었는지 여부를 확인하기 만하면됩니다. – quip