오늘 마지막 질문이 될 것 같아요!
namespace ConsoleApp36
{
    public interface IRepository
    {
        void Get();
    }
    public class Repository : IRepository
    {
        public void Get()
        {
            Console.WriteLine("Get() 메서드를 구현해야 합니다.");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            IRepository repository = new Repository();
            unsafe
            {
                TypedReference tr = __makeref(repository);
                IntPtr ptr = **(IntPtr**)(&tr);             
                Console.WriteLine(ptr);
            }
            repository.Get();
        }
    }
}   
[출력] 
51913544
Get() 메서드를 구현해야 합니다.
[질문 1]
알려주신 코드를 추가해서 ptr에 있는 값을 출력해보니 51913544가 나오는데 
이것이 힙에 할당된 new new Repository() 시작주소가 되겠죠?
[질문 2] 
만약 컴퓨터가 32비트 운영체제면 포인터 크기는 자료형에 상관없이 4바이트니까
주소를 담고 있는 repository의 자료형에 해당하는 IRepository의 크기도 4바이트로 생각해도 되나요?
[질문 3]
제가 sizeof로는 클래스, 인터페이스 등의 크기를 출력할 수 없더라구요....
Console.WriteLine(sizeof(IRepository)); ← 오류 발생
만약 클래스, 인터페이스의 크기를 출력하고 싶다면
위의 예시에서는 IRepository의 크기를 출력하고 싶다면 어떻게 해야 될까요?
추신) 커피 기능 추가하시면 꼭 알려주세요!
즐거운 금요일 밤 되세요~!!
        
        
                    
                    
                    
                    
                    
    
                    
                    
                    
                    
                    
                
                    [최초 등록일: ]
                    [최종 수정일: 11/27/2020]