일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Framework
- unity
- 프레임워크
- TextMeshPro
- jumping ball
- AES
- C#
- 텍스트 메시 프로
- RSA
- 가이드
- DotsTween
- Dynamic Font
- 2D Camera
- Custom Package
- base64
- Unity Editor
- 다이나믹 폰트
- adfit
- 단말기 해상도
- Tween
- Job 시스템
- 커스텀 패키지
- job
- 이미지 폰트
- ui
- 샘플
- 최적화
- sha
- 암호화
- Dots
- Today
- Total
EveryDay.DevUp
[C#] var 키워드 본문
1. var란?
- C# 3.0에서 지역 변수를 선언할 때 컴파일러가 빌드 시점에 타입을 추론할 수 있도록 사용하는 키워드
: 명시적으로 변수의 타입을 정의하지 않아도 var 키워드를 사용해서 해당 변수의 타입을 지정할 수 있음
: 초기화 문의 오른쪽에 있는 식에서 변수의 형식을 유추
var count = 0;
Debug.Log("count type : " + count.GetType()); // count type : System.Int32
var result = false;
Debug.Log("result type : " + result.GetType()); // result type : System.Boolean
2. var 제한 사항
: 지역 변수가 동일한 문에서 선언 및 초기화 된 경우에만 var를 사용할 수 없음
var test1; // 초기화 식 없이 사용할 수 없음
var test2 = null; // null로 초기화할 수 없음
var test3 = () => count; // 람다식, 익명 함수, 메서드 그룹으로 초기화할 수 없음
: 클래스 범위의 필드에서 var 사용할 수 없음
: var를 사용하여 선언된 변수는 초기화 식에 사용할 수 없음
int num = (num = 1);
var num2 = (num2 = 2);
// Cannot use local variable 'num2' before it is declared
// Value assigned is not used in any execution path
: 동일한 문에서 여러 개의 암시적 형식 변수 초기화를 할 수 없음
int i, i2, i3;
var num, num2, num3 = 0;
// Implicitly-typed local variables cannot have multiple declarators
3. var 를 사용할 때의 장점
- 생성자 호출식에서 객체 인스터화에 형식 이름을 반복하지 않을 수 있음
List<int> candidateList = new List<int>();
// ======================================
var candidateList = new List<int>();
- 익명 타입 (anonymous type)을 지원하기 위해서 타입을 암시적으로 선언할 수 있음
var man = new { age = 10 };
Debug.Log("man age " + man.age); // man age 10
4. var 를 사용할 때의 단점
- var를 남발할 경우 코드의 가독성이 떨어지게 됨
- 내부적으로 이루어지는 자동 타입 변환 과정으로 인해 발견하기 어려운 버그를 만들 수 있음
var op1 = GetNumber();
var op2 = op1 / 10;
Debug.Log("op2 type : " + op2.GetType());
private float GetNumber() => 10f;
private int GetNumber() => 10;
// GetNumber()의 return type에 따라 op2의 Type이 결정됨
// 코드에서 op2의 type을 직관적으로 알기 어려움
// GetNumber()의 return type이 float이고, int op2 = op1 / 10 를 사용할 경우 에러가 발생
// 명시적으로 type을 사용하는 경우 var 보다 에러를 찾기 쉬움
5. C# 코딩 규칙
- 할당의 오른쪽에서 변수의 형식이 명확한 경우 사용
- var를 사용할 경우, 변수 이름을 사용하여 변수의 타입을 지정하면 안됨
- dynamic 대신 var를 사용하면 안됨. dynamic과 var는 다름
- 루프의 루프 변수에 var를 사용
- LINQ 쿼리의 결과 시퀀스에 사용
6. 결론
- 대부분의 var 사용은 개발 편의성에 기초함.
: 익명 타입 예외
- 자료형의 계산이 민감한 경우에는 var보다는 명시적인 타입 선언이 좋음
: int, float, double 등
- C# 코딩 규칙에 따라 사용할 경우 큰 문제는 없음
[참고]
https://www.yes24.com/Product/Goods/97314203
https://www.yes24.com/Product/Goods/55864866
'C#' 카테고리의 다른 글
[Unity] C# 최적화 - Part1 (0) | 2023.10.02 |
---|---|
[Unity] 특성 ( Attribute Class ) - 1 (0) | 2022.07.07 |
[Unity] .Net 디컴파일 ( JetBrain DotPeek ) (0) | 2021.12.30 |
[Unity] 메서드 매개 변수 ( 값 형식, 참조 형식, in, out, ref, params ) (0) | 2021.12.28 |
[Unity] 액세스 한정자 ( public, protected, internal, private ) (2) | 2021.12.27 |