부모글 보이기/감추기 AD BLOCK 해제 요청 이 글에는 광고가 많이 들어가 있지 않습니다. adblock을 해제하셔도 글을 읽는데 그다지 부담이 없으니 해제를 부탁드립니다. 안녕하세요. 궁금한게 있어서 질문드립니다. Person person1; Person person2 = person1; person1 = new Person(); 이렇게 했을 경우 person2는 계속 null입니다. person1 이 객체가 생성되면 person2도 동일하게 적용되게 하려면 어떻게 해야하나요? [다음 글] 시작하세요 C# 8.0 중 제네릭타입의 IEnumerable[이전 글] TCP PSH flag 패킷 수신 에러 [최초 등록일: 2/10/2022] [최종 수정일: 2/10/2022] 비밀번호 댓글 작성자 2022-02-10 05시34분 당연한 결과입니다.person1과 person2는 각각 스택에 4바이트(또는 8바이트)를 점유하고 0으로 초기화됩니다. (참조형인 경우, 0으로 초기화된 것은 null을 의미합니다.)따라서, 아래의 코드는,Person person2 = person1;person1 4/8바이트에 담긴 0 값을 person2 4/8 바이트에 대입하는 역할만 하게 됩니다. 그리고 이후에 "person1 = new Person()"을 하게 되면 person1에 해당하는 4/8바이트의 영역에만 GC Heap에 할당된 Person 객체의 주솟값을 넣게 됩니다. 결국 person2의 4/8바이트 영역에는 아무런 값도 안 담기는 것입니다.어떤 것을 원하는지는 모르겠지만, 저런 경우에 굳이 그렇게 처리하고 싶다면 다음과 같이 변경할 수는 있습니다.Person person1;ref Person person2 = ref person1;person1 = new Person();(혹시 제 책을 가지고 계시다면 "3.3.4.1 두가지 저장소: 스택과 힙" 절과 "12.2 반환값 및 로컬 변수에 ref 기능 추가" 절을 읽어보시면 도움이 될 것입니다.) 정성태 NoWriterDateCnt.TitleFile(s)