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]