일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- mysql
- Shader
- pandas
- 배열
- with
- Unity
- FIND
- SSH
- if
- sql
- 쉘
- awk
- expect
- C++
- ubuntu
- Eclipse
- autovacuum
- sqlite
- python
- dataframe
- conda
- List
- SVN
- null
- postgresql
- ngui
- boost
- pi
- c++11
- DROP
Archives
- Today
- Total
その先にあるもの…
클래스가 소멸할 때 멤버변수가 클래스인 것은 null이 되는지 궁금 본문
C++을 오래 사용해서 그런지 C#을 처음 사용할 때 소멸자를 쓰지 않는 것에 상당이 어색함을 느낀다.
소멸자에 할당된 변수들을 모두 소멸시켜 줘야 하는데 C#은 그렇지 않기 때문에 자동으로 소멸되는 것인가?
class Test1
{
public int i = 0;
public Test1() { i = 10; }
}
class Test2
{
public Test1 m_Test1;
public Test2() { m_Test1 = new Test1(); }
public void Release() { m_Test1 = null;}
}
class Program
{
static void Main(string[] args)
{
Test2 m_test = new Test2();
m_test = null;
System.GC.Collect();
}
}
m_Test = null; 을 하고 나면 바로 멤버 변수가 null이 되지 않는다.
GC가 호출되지 않았기 때문에 GC를 호출하고 나면 멤버 변수가 null로 초기화 된다.
'프로그래밍 > C#' 카테고리의 다른 글
char to int (0) | 2014.12.04 |
---|---|
Loop 문에서 list요소 삭제하기 (0) | 2014.09.19 |
Dictionary value 변경 (0) | 2014.09.01 |
WeakReference (0) | 2014.06.03 |
CreateInstance, InvokeMember (0) | 2014.04.21 |
Comments