Microsoft MVP성태의 닷넷 이야기
c#문법질문입니다. [링크 복사], [링크+제목 복사],
조회: 13971
글쓴 사람
kss
홈페이지
첨부 파일
 

 class Program
    {
        public object MyClass { get; } = new object();
        public object MyClass2 => new object();

        static void Main(string[] args)
        {
            Program pg = new Program();
            Console.WriteLine(pg.MyClass.Equals(pg.MyClass));
            Console.WriteLine(pg.MyClass2.Equals(pg.MyClass2));
        }
    }

콘솔에 첫번째는 true라고 찍히는데
두번째는 false라고 찍힙니다.

MyClass2가 호출될때마다 계속 힙에 객체가 생성되는것같은데
Myclass의 간편표기볍이 MyClass2아닌가요?








[최초 등록일: ]
[최종 수정일: 11/1/2019]


비밀번호

댓글 작성자
 



2019-11-01 11시16분
(.NET Reflector 등을 이용해) 각각의 풀어진 경우를 보면 알 수 있습니다. 예상할 수 있겠지만 MyClass의 구현과,

object _prop; // 생성자에서 "_prop = new object()" 초기화
public object MyClass { get { return _prop; } }

MyClass2는 다릅니다.

public object MyClass2 { get { return new object(); } }
정성태

NoWriterDateCnt.TitleFile(s)