C#

C# var 키워드(암시적으로 형식화된 로컬 변수) - 공부하는 도비

DOVISH WISDOM 2023. 7. 25. 14:29  
728x90
반응형

오늘은 파이썬과 C, 자바에는 없지만, C#에는 있는 신기한 키워드 var에 대해 알아보겠습니다. 

파이썬을 제외하고 프로그램 언어에서 변수를 선언해줄 때,

대부분 "int, double, float, string" 등등 선언할 변수의 타입을 미리 지정해줍니다. 

 

var는 "int, double, float, string" 위치에 대신 쓸 수 있는 키워드로, C# 컴파일러는 var 변수에 저장되는 값을 자동으로 추론해서 적당한 형식으로 변환하는데, 이 기능을 형식 추론이라고 한다. 

 

아래 코드의 num1은 정수형 변수로 (명시적) 선언되었고, 반면 num2는 var 변수로 (암시적) 선언되었다. 

using System;

class HelloWorld {
  static void Main() {
    
    int num1 = 10;          // 명시적 (explicit)
    var num2 = 20;          // 암시적 (implicit)
    
    var message = "Hello";  // 암시적 (implicit)
    
    Console.WriteLine($"num1's type : {num1.GetType()}");
    Console.WriteLine($"num2's type : {num2.GetType()}");
    Console.WriteLine($"message's type : {message.GetType()}");
    
  }
}

num1 과 num2 의 타입형을 각각 출력해보면, 아래 처럼 결과가 나온다. C# 컴파일러가 var로 선언한 num2에 대해서도 자동으로 string 변수라고 인식하는 것이다. 

 

추가로, var 키워드를 가지고 문자 하나를 입력받는 방법에 대해서도 알아볼게요. 

- Console.Read() : 콘솔에서 한 문자를 정수로 입력받음

 

Console.Read()은 정수를 입력으로 받기 때문에, 문자 하나를 입력받으려고 하면 오류가 발생합니다. 

 char a = Console.Read();
 Console.WriteLine(a);
    
/*
 결과 
 main.cs(15,22): error CS0266: Cannot implicitly convert type `int' to `char'. An explicit conversion exists (are you missing a cast?) Compilation failed: 1 error(s), 0 warnings
 */

이때, var를 사용해줍니다. 

using System;

class HelloWorld {
  static void Main() {
    
    var a = Console.ReadLine();             // 문자열 입력 받기
    var b = Convert.ToChar(Console.Read()); // 문자 하나 입력 받기 
    
    Console.WriteLine($"a : {a}, b : {b}");
    
  }
}

 

반응형