2009-03-10 4 views
3

C/C++로 프로그래밍 할 때 흔히 포인터 값을 추적에 포함합니다. 이를 통해 추적 메시지간에 개체를 상관시키는 데 도움이되었습니다. C#에서는 추적 할 수있는 포인터 값이 없습니다. 추적 가능한 객체 ID에 대한 좋은 대안이 있습니까 ??C#에서 포인터로 디버깅

근본적인 메모리 주소를 얻는 방법을 알지 못하지만 GC를 사용하면 개체를 이동할 때 도움이되지 않습니다.

답변

2

각 생성자 호출에서 증가하는 클래스 변수를 추가하십시오. 이 클래스 변수를 자신의 색인으로 클래스에 할당하십시오.

class foo 
{ 
    private static int counter; 
    private int instance_counter; 

    public Foo() 
    { 
    instance_counter = counter; 
    counter++; 
    } 

    public string toString() 
    { 
    return "Foo "+instance_counter.toString(); 
    } 
} 

상자가 컴파일되지 않을 수 있습니다. 여기에 컴파일러가 없습니다.

+0

실제로하지 toString를 ToString, 그리고 당신은 공공 재정의 공공 문자열 ToString()하지만이 작동 이외의 말을해야합니다. 꽤 귀찮은 것 같습니다. –

2

Object.GetHashCode()를 사용하십시오. C#의 모든 클래스는 Object에서 파생되므로 GetHashCode() 메서드는 모든 객체에서 액세스 할 수 있습니다. 그러나 Object.GetHashCode()가 호출되고 그 결과가 사용자 정의 클래스에 대한 해시 코드 생성을 위해 어떤 식 으로든 사용될 때만 고유성이 보장됩니다. 이것은 하나 이상의 객체에 대해 동일한 해시 코드를 얻는 결과를 가져올 수 있다는 것을 절대적으로 보장하지는 않습니다.

관련 문제