음 아마 비둘기보단 똑똑할꺼야
준돌 Jundol / 2018.01.24 15:39 / C#

문득 싱글톤을 공부하다가 객체의 주소값을 출력해보고싶어졌다.


포인터를 사용하면 간단하게 출력될줄 알았으나 복잡한 방법을 거쳐야 출력이된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            Singleton s1 = Singleton.Instance();
            Singleton s2 = Singleton.Instance();
            
            if (s1 == s2)
            {
                Console.WriteLine("Objects are ths same instance");
                unsafe
                {
                    TypedReference tr1 = __makeref(s1);
                    TypedReference tr2 = __makeref(s2);
                    IntPtr ptr1 = **(IntPtr**)(&tr1);
                    IntPtr ptr2 = **(IntPtr**)(&tr2);
                    Console.WriteLine(ptr1);
                    Console.WriteLine(ptr2);
                }
            }
 
            Console.ReadKey();
        }
    }
 
    class Singleton
    {
        private static Singleton _instance;
        protected Singleton()
        {
 
        }
 
        public static Singleton Instance()
        {
            if (_instance == null)
            {
                _instance = new Singleton();
            }
 
            return _instance;
        }
    }
}
 
cs

위 코드를 보면 unsafe 문 안에 주소를 출력하는 부분이 있다.

변수를 출력하는 방법은 많은데 객체 자체의 주소를 출력하는 글이 없어서 기록해본다.

준돌 Jundol / 2017.02.14 13:36 / Visual Studio 2012

아래 명령어를 통해 참조된 dll파일을 .csproj에 설정되어있는 버전에 맞게 재 로딩시킨다.

종속성이 흐트러질경우 아래 명령어를 통해 초기화가 가능하다.


Update-Package -Reinstall

© 2015 Jundol in 음 아마 비둘기보단 똑똑할꺼야
Designed by DH / Powered by Tistory
138 / 54 / 113,780