Microsoft MVP성태의 닷넷 이야기
List에 static 변수를 추가했을때의 궁금증 [링크 복사], [링크+제목 복사],
조회: 13249
글쓴 사람
곰장어 (cazador7 at naver.com)
홈페이지
첨부 파일

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public static List<SomeClass> ClassList { get; set; }
        public static SomeClass Class1 { get; set; }
        public static SomeClass Class2 { get; set; }
        public static SomeClass Class3 { get; set; }
        public Form1()
        {
            InitializeComponent();
            ClassList = new List<SomeClass>();
            ClassList.Add(Class1);
            ClassList.Add(Class2);
            ClassList.Add(Class3);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Class1 = new SomeClass();
            Class2 = new SomeClass();
            Class3 = new SomeClass();

            // 아래처럼 하면 됨
            //ClassList.Add(Class1);
            //ClassList.Add(Class2);
            //ClassList.Add(Class3);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            foreach (var c in ClassList)
            {
                if (c != null)
                {

                }
            }
        }

    }

    public class SomeClass
    {

    }
}



1. SomeClass 타입을 갖는 static List<SomeClass> 프로퍼티 (ClassList), static SomeClass 프로퍼티 (Class1~3)

2. 생성자에서 ClassList 초기화 후 Class1~3 Add

3. 버튼1을 누르면 Class1~3 에 메모리할당

4. 버튼2를 눌러서 List프로퍼티 내에 Add된 Class1~3의 메모리할당여부 확인



Class1~3을 ClassList에 add를 먼저하고

버튼1을 눌러서 나중에 초기화를 하더라도

Class1~3은 메모리에 하나만 존재할수있는 static 이므로

버튼2를 눌렀을때 null이 아닌값으로 기대했는데 모두 null 로 나오고

초기화후 add를 해야만 null 이 아닌값으로 나오는게 잘 이해가 안되어서 질문여쭙습니다

add에 담기는건 static 변수의 메모리주소가 아닌건가요?










[최초 등록일: ]
[최종 수정일: 5/21/2021]


비밀번호

댓글 작성자
 



2021-05-21 02시49분
Add에 들어가는 것은 일반적으로는 인스턴스의 주소가 맞을 것입니다. 하지만, Form1에서 Add하는 "Class1~3"의 주솟값이 뭘까요? (달리 말해, 해당 속성들이 반환하는 주솟값이 뭘까요?)
정성태
2021-05-25 02시39분
[곰장어] Form1에서 Add하는 "Class1~3"의 주소값은 null 인데
해당 null값을 버튼1을 클릭하면 메모리주소값을 할당해주므로
버튼2를 클릭하면 Class1~3"의 주소값이 null이 아닌값으로 예상하였습니다
[guest]
2021-05-25 08시15분
이미 classlist에 null 3개가 들어간 것을 이후에 속성에 인스턴스를 할당했다고 해서 classlist의 보관값들이 자동으로 바뀌지는 않습니다.
정성태

... 31  32  33  34  35  36  37  38  39  40  41  42  [43]  44  45  ...
NoWriterDateCnt.TitleFile(s)
4804spow...2/7/201716695    답변글 [답변]: 특정 범위의 값을 다른 값으로 치환하는 메소드를 만들어야 할 때 가장 빠른 방법은?
4805spow...2/7/201716492    답변글 [답변]: 특정 범위의 값을 다른 값으로 치환하는 메소드를 만들어야 할 때 가장 빠른 방법은? (글삭제가 안돼 재첨부합니다)파일 다운로드1
4801spow...2/3/201716336C#의 참조 동작관련하여 아이디어 문의 드립니다 [4]
4800오세운2/1/201720459C# 에서 C++ DLL임포트 질문입니다. [2]
4798guest1/29/201718324picturebox의 image.dispose [1]
4797김철환1/13/201718157책에 관한 질문입니다 [3]
4796Bere...1/13/201718030++ 후위연산자와 = 을 함께 사용할 때 생성되는 IL 코드 관련... [2]
4795김철환1/11/201719850이벤트 부분을 읽고 있는데 이해가 안되서 질문합니다.. [11]
4794김철환1/10/201716618안녕하세요 c# 6.0 책을 구매한 사람인데요 [3]
4793장준영1/7/201718789안녕하세요 c언어 처음 공부해보는 학생입니다 [4]파일 다운로드1
4792김재영1/4/201720784소스코드 공개 전 성태님의 의견을 듣고싶습니다 [3]
4791C#초보12/28/201620516비동기 소켓 close시 ObjectDisposedException 문제점 질문 있습니다.. [1]
4790미나리12/24/201620607파워포인트 쇼 제어 SimpleHttpServer.cs 작동문제 [4]파일 다운로드1
4789김솔지12/21/201618928프린트 시, 프린트하는 파일의 파일명 구하는 부분에 대해서 질문드립니다. [1]
4788짜두12/19/201618945Visual Studio 2015 에서 msbuild 12 사용 [5]
4787guest12/18/201621359VLC라이브러리에 대해 아시나요? [3]파일 다운로드1
4785Hyou...12/16/201620800WPF 개발 시 MVVM 프레임워크 사용 [2]
4784ds12/15/201616895문의 드립니다. [2]
4783후배12/13/201618212MemoryStream에 관한 질문 입니다. [5]
4782김형민12/6/201616745[ C# 6.0 ] 126p 오타인가요? [6]
4781질문자11/29/201616566ms워드 저장 오류 [1]
4780최진11/28/201621331안녕 하세요 빌드 관련해서 질문드립니다 꾸벅 [4]
4779손니11/28/201617498안녕하세요 질문하다 드려도 될까요 [3]
4778김상호11/25/201616765재귀호출->비재귀호출 [2]파일 다운로드1
4777권오영11/12/201619419아래 질문 상세 소스전체입니다.. [3]
4776권오영11/11/201617432제가 이클립스를 공부중인데..이상한것을 찾았습니다.. [2]
... 31  32  33  34  35  36  37  38  39  40  41  42  [43]  44  45  ...