할당문보다 변수초기화를 사용하는 편이 더 좋다 라고들 합니다.
그 이유에 대해서 생각해 보겠습니다.
[1번]
int a = 3;
[2번]
int b;
b=3;
1번식은 선언식 변수 초기화이고 2번식은 그냥 선언 후 변수할당문입니다.
여기서 말하는 할당문보다 변수 초기화를 사용하는 편이 더 좋다 라는 말은 2번식보다 1번식이 더 좋다는 뜻입니다.
그렇다고 언제나 1번식이 좋은건 아니므로 좋은 경우와 좋지않은 경우를 살펴보겠습니다.
좋은경우
- 클래스의 여러 생성자에서 멤버 변수를 항상 동일하게 초기화 할 경우
// -- case 1 : 여러 생성자에서 동일한 초기화를 하고자 할 경우
// -- 어떤 생성자라 할지라도 _list 는 처음부터 List<int>()를 할당하고 시작합니다.
private List<int> _list = new List<int>();
public MyClass1(int a)
{
_list.Add(a);
}
public MyClass1(int a, int b)
{
_list.Add(a);
_list.Add(b);
}
- 생성자에 상관없이 멤버변수를 초기화 하고자 할 경우
// -- case 2 : 생성자 유무에 관계 없이 초기화 하고자 할 경우
// -- 생성자가 없다 하더라도, 기본적으로 _list 는 할당 됩니다.
class MyClass2
{
private List<int> _list = new List<int>();
}
선언식 변수 초기화가 안좋은 경우는 언제일까요?
좋지않은 경우
- 멤버 변수가 생성자에 따라 다르게 설정해야 할 경우
// -- Bad Case 1 : 생성자에 따라, 멤버 변수를 다르게 설정해야 될 경우
// -- 예제에서 볼 수 있듯이 재할당 하므로 비효율 적입니다.
class BadCase1
{
List<int> _list = new List<int>();
BadCase1(int list_size)
{
// 재할당 ...
_list = new List<int>(list_size);
}
}
'Programing > C#' 카테고리의 다른 글
[DevExpress] WinForm WaitIndicator (0) | 2018.09.05 |
---|---|
set, get 접근자 (0) | 2018.06.29 |
상수(Constant) (0) | 2018.06.28 |
개념정리(namespace,class,main,object) (0) | 2018.06.28 |
[초보자용]버튼 클릭시 TextEdit, TextBox 내용 지우기 (0) | 2018.06.15 |