C# 3.0의 var에 대한 오해를 풀다

이번 주말에는 C# 3.0에서 개인적으로 가장 불만이라고 생각했던 var에 대한 용법을 상세히 알아봤다. var라니. 처음 C# 3.0 스펙을 보고 “헉 -_-“하고 놀랐던 부분이다. 분명히 컴파일언어라고 생각했는데 이런식으로 Variant Type을 언어 스펙에 집어넣다니. 스크립트 언어도 아닌데 말이다.

하지만 내 예상과는 달리 var의 용법은 크게 다른 것이었다. var는 단지 System.Object의 객체를 만들어 그 안에 무언가를 집어넣고 꺼내온다는 Boxing과 Unboxing 작업을 최소화할 수 있는 또 다른 수단이었다. C# 2.0에서, System.ValueType에 대한 Boxing과 Unboxing을 최소화하기 위하여 소개한 것이 Nullable Type (System.Nullable<T>)이었다면, C# 3.0에서는 Compile-Time의 수준에서 동적으로 형식을 결정하도록 하는 것이 바로 var 키워드의 용법이었다. 다시 말해, Runtime에 대해서는 털끝하나 손해주는 일이 없다는 것이며 대신 그 댓가를 컴파일러가 지불하는 셈이다.

단독으로 사용하는 var가 어떤 관점이나 측면에서 유용하고 효과적인지 아직은 모르겠다. 하지만, var를 단독으로 쓰는 경우보다는 C# 3.0의 다른 기능들 (LINQ, Lambda Expression 등)의 보조를 맞추기 위하여 사용하는 것이 좀 더 적절하지는 않을까라는 결론을 유추할 수 있었다.

댓글 남기기