C# 암시적 타입변환, var 타입
지역변수의 타입 선언시 int, float, long, char 등으로 명시적으로 해오셨을텐데요.
var를 이용하면 암시적으로 타입변환해서 사용할수있습니다.
- 반복문이나 LINQ사용시 리턴되는 데이터타입관련없이 사용할수있다는 장점이 있으나
아래 서술되는 항목처럼 몇가지 제한 사항이 존재합니다.
- private, public 등 클래스의 필드데이터로 쓸 수 없다
- 반환값으로 쓸수없다
- 매개변수타입으로 쓸 수 없다
- null 초기화 못함. 컴파일러가 변수의 타입을 추정할 수 없으므로
단, 참조타입의 경우 할당 후 null할당은 가능
- 형식 제약이 엄격한 타입이므로 원래 초기값과 다른 타입의 값을 가질 수 없다
- nullable지정은 불가능
class Program
{
//private var m_Int = 10; 필드데이터로 쓸수없다
//public var m_str = "HELLO";
//static var ReturnMethod(var i, var n) { } 반환값, 매개변수 타입으로 쓸수없다
static void Main(string[] args)
{
var v1 = 10;
var v2 = "HELLO";
//var v3 = null; null로 초기화 못함
//var? v4 = null; nullable로 지정할수없다
string[] strs = new string[] { "ABCD", "DDD", "EEE", "FFF" };
Console.WriteLine("v1:" + v1);
Console.WriteLine("v2:" + v2);
v2 = null; //초기값(참조타입) 할당후 null할당은 허용.
Console.WriteLine("v2:" + v2);
//v2 = 100; 원래 초기값과 다른 타입의 값을 가질수없다
//반복문
foreach(var s in strs)
Console.WriteLine("string: {0}", s);
//LINQ
var res = from s in strs
where s.StartsWith("A") //"A"로 시작되는 항목을 LINQ이용해서 가져오기
select s;
foreach(var s in res)
Console.WriteLine("s:" + s);
}
}
'프로그래밍&IT > C#' 카테고리의 다른 글
[.Net C#] 확장메서드 (extension method) (0) | 2015.12.21 |
---|---|
C# nullable타입 변수, 데이터 타입? 형식 & ?? 연산자 (0) | 2015.12.18 |
System.Environment 클래스관련해서 (0) | 2015.12.17 |
Thread 관련 간단 정리2. 멀티스레드 관련 - ThreadPool (0) | 2015.12.13 |
Thread 관련 간단 정리1. Thread / ThreadStart / ParameterizedThreadStart (0) | 2015.12.13 |