728x90
Console 클래스로는 사용자가 콘솔에서 데이터를 입력하고 이를 다시 콘솔 화면에 출력할 수 있습니다.
- Console.ReadLine() - 콘솔에서 한 줄을 입력받고, 콘솔에서는 현재 시점에 멈추는 기능이 있어 [Enter]를 누를 때까지 대기합니다.
- Console.Read() - 콘솔에서 한 문자를 정수로 입력받습니다.
- Console.ReadKey() - 콘솔에서 다음 문자나 사용자가 누른 기능 키를 가져옵니다.
Console.ReadLine() 사용하기
using System;
namespace N_ReadLine
{
internal class ReadLine
{
public void ReadLineEx()
{
Console.Write("이름을 입력하세요 =>");
String name = Console.ReadLine();
Console.WriteLine(name);
}
}
}
실행 결과
Console.Read() 메서드 사용하기
Console.Read() 메서드를 사용하면 콘솔에서 문자를 하나만 입력받을 수 있습니다.
using System;
namespace N_Read
{
internal class Read
{
public void ReadEx()
{
int x = Console.Read();
Console.WriteLine(x);
Console.WriteLine(Convert.ToChar(x));
}
}
}
Convert 메서드를 사용해서 문자로 변환합니다.
실행결과
- A 입력
- 정수형 변수 x 에 A의 아스키코드 65가 출력됌
- 아스키코드 65를 Convert 클래스에 ToChar 메서드를 사용해서 문자 A로 출력
암시적 형 변환과 명시적 형 변환
형식 변환은 크게 암시적(implicit)(묵시작) 형 변환관 명시적(explicit) 형 변환으로 구분할 수 있습니다. 암시적 형 변환은 변환 형식이 안전하게 유지되며 데이터가 손실되지 않아 특수한 구문이 필요 없습니다.
using System;
namespace N_Conversion
{
internal class Conversion
{
public void ConversionEx()
{
//암시적 형 변환
int number1 = 100;
long number2 = number1;
// int 변수보다 long 변수가 더 크기 때문에 그대로 담을 수 있슴.
//명시적 형 변환
long number3 = 200;
int number4 = (int)number3;
//long 변수 앞에 (int)를 붙여 long을 int를 변경해야 함, 해당 방식을 명시적 형 변환이라고 함.
}
}
}
💡 명시적 형 변환을 할 경우에 에러는 발생하지 않지만, int 형식 변수의 크기를 벗어나는 데이터를 저장할 경우 잘못된 데이터가 저장될 수 있으니 주의해야 합니다.
long → int 형식으로 변환하는데 명시적 형 변환을 사용하지 않은 경우
Convert 클래스 문서
실수로 변환하기 예제
using System;
namespace N_Conversion
{
internal class Conversion
{
public void ConversionEx()
{
//암시적 형 변환
int number1 = 100;
long number2 = number1;
// int 변수보다 long 변수가 더 크기 때문에 그대로 담을 수 있슴.
//명시적 형 변환
long number3 = 200;
int number4 = (int)number3;
//long 변수 앞에 (int)를 붙여 long을 int를 변경해야 함, 해당 방식을 명시적 형 변환이라고 함.
//실수 입력받고 변환하기 예제, 간단한 예외처리 추가
Console.Write("실수를 입력하세요 : ");
string input = Console.ReadLine();
//예외처리 X
//double output = Convert.ToDouble(input);
//Console.WriteLine(output);
if(double.TryParse(input, out double output)) //예외처리 O
{
Console.WriteLine(output);
} else { Console.WriteLine("fail"); }
}
}
}
C# - Convert vs Parse vs TryParse
이진수 다루기
using System;
namespace N_BinaryString
{
internal class BinaryString
{
public void BinaryStringEx()
{
Console.WriteLine(Convert.ToString(15, 2));
Console.WriteLine(Convert.ToString(15, 2).PadLeft(8,'0')); //자리수 8칸
byte x = 10;
Console.WriteLine(
$"십진수: {x} -> 이진수: {Convert.ToString(x,2).PadLeft(8,'0')}");
}
}
}
실행 결과
var 키워드로 암시적으로 형식화된 로컬 변수 만들기
변수를 선언할 때 int, string 등 기본 제공 키워드 대신 var 키워드를 사용하면 입력되는 값에 따라 자동으로 형식이 결정됩니다.
C#에서는 var 변수는 매우 강력한 형식입니다.
C# 컴파일러는 var로 선언된 변수에 저장되는 값을 자동으로 추론해서 적당한 형식으로 변환하는데, 이 기능을 형식 추론(type inference)이라고 합니다.
💡 var 그리고 dynamic 키워드
자바스크립트 같은 다른 프로그래밍 언어를 알고 있다면 var 키워드가 모든 값을 담고 있어 C#도 동일하다고 오해하곤 합니다. 하지만 C#의 var 키워드는 프로그램 소스 코드 작성의 편의성을 위해 만든 키워드이지 모든 값을 다 담을 수 있는 키워드가 아닙니다. 자바스크립트의 var에 해당하는 C# 키워드는 dynamic입니다.
using System;
namespace N_Var
{
internal class Var
{
public void VarEx()
{
int age = 27;
Console.WriteLine(age);
var age2 = 30;
Console.WriteLine(age2);
var name = "이정원";
Console.WriteLine(name);
Console.WriteLine(name.GetType());
Console.WriteLine(age2.GetType());
dynamic name2 = "자바스크립트의 var 키워드와 동일한 기능";
Console.WriteLine(name2 + " / " + name2.GetType());
//키보드 키 값 읽기
Console.WriteLine("키보드 아무 키나 입력하세요");
ConsoleKeyInfo keyid = Console.ReadKey(true);
Console.WriteLine(keyid.Key); //키
Console.WriteLine(keyid.KeyChar); //유니코드
Console.WriteLine(keyid.Modifiers); //Ctrl, Alt, Shift 조합
}
}
}
실행 결과
728x90
'C# > Basic Syntax' 카테고리의 다른 글
[C#] 6. 제어문 if/else, switch, for, while, foreach 등 (0) | 2022.09.20 |
---|---|
[C#] 5. 연산자 (0) | 2022.09.19 |
[C#] 3. 문자/문자열/논리 데이터 형식 사용해보기 (0) | 2022.09.15 |
[C#] 2. 숫자 데이터 형식 사용하기 (2) | 2022.09.07 |
[C#] 1. 변수 생성 및 리터럴 사용해보기 (0) | 2022.08.24 |