C#

C# 입출력과 각종 용어들

bugmin 2024. 4. 22. 23:55

코드를 볼 때는 원리보다는 무슨 의도로 만들어졌을까에 집중하고 또한 많은 실패 경험은 도움이 된다는 스파르타코딩클럽의 튜터님의 조언으로 시작한다.

 

using System

 

이는 System이라는 namespace 안의 기능을 사용하겠다는 의미이다.

namespace는 클래스들의 묶음이자 기능들의 묶음으로 볼 수 있다.

 

출력

 

C#에선 콘솔에 출력을 담당하는 C++의 cout의 역할을 하는 것이 바로 Console.WriteLine이다.

 

string name = "bugmin";

Console.WriteLine("Hello, {0}!", name);
Console.Write($"Hello, {name}!");

 

Console.WriteLine은 메서드 오버로딩이 되어있어 문자열이 아닌 정수형, 실수형 변수를 넣어도 출력이 가능하게 설정되어있다.

 

더보기

메서드 오버로딩이란 메서드의 이름과 반환값은 같지만 매개변수(파라미터)를 다르게 하여 메서드를 다중으로 정의할 수 있는 개념이다.

 

해당 WriteLine 메서드는 콘솔에 출력을 담당하니 문자열을 매개변수로 넣어 출력을 하는게 일반적이라 생각할 수 있지만 정수형이나 실수형 값에 대해서도 매개변수로 받아줄 수 있도록 메서드 오버로딩을 통해 다중으로 메서드가 정의되어 있는 것이다.

 

WriteLine은 출력 후 다음 줄로 내려오고

Write는 출력후 다음 줄로 내려오지 않고 위치하기에 띄어쓰기를 해야 다음 라인과 구분이 가능해진다.

 

한마디로 두 함수의 차이는 다음 줄로 내려오는가에 있다.

 

WriteLine과 Write에서는 같은 문자열을 전달하고 있지만 방식이 다르게 전달되고 있는데 이는 문자열 포맷팅의 차이이다. 이는 다음 글에서 자세히 다뤄볼 것이다.

 

입력

 

그러면 콘솔입력은 무엇으로 받는가? C# 에서 cin 역할을 하는 함수가 뭐냐면 Console.ReadLine 메소드다.

string input = Console.ReadLine();

 

위와 같이 사용할 수 있다. 참고로 String 값만 반환하기 때문에 만일 입력으로 숫자를 넣고 이를 int나 float로 활용하고 싶다면 형변환이 아닌 다른 변환법을 사용해야한다.

 

문자열을 숫자로 변환

int num = int.Parse(Console.ReadLine());

 

string의 경우엔 형변환이 아니라 변환을 하고자 하는 자료형한테 요청을 해야한다. 고로 int의 기능인 Parse를 써 정수형으로 보여지는 문자열을 정수로 변환을 시킨다. float도 Parse 함수를 이용할 수 있다.

 

이스케이프 시퀀스 (Escape Sequence)

 

문자열에 작은따옴표(')나 큰따옴표(") 같이 특수한 문자를 사용하고자 사용되는 것이다.

 

\': 작은따옴표 삽입

\": 큰따옴표 삽입

\\: \ 삽입

\n: 새로운 줄 삽입

\t: 탭 삽입

 

까진 대부분이 알겠지만 \r 의 경우엔 커서를 맨앞으로 이동 이동 시키고 공백을 제거 시킨다.

\b는 커서를 왼쪽으로 한 칸 이동시키는 백스페이스의 기능을 한다.

 

리터럴 (Literal)

 

변수의 자료형에 알맞은 리터럴을 사용해야한다. ex) 39.7 (X), 39.7f (O)

 

키워드(Keywords)

 

class나 int와 같이 변수, 메소드, 클래스 등의 이름으로 쓰지 못하는 것들을 의미한다.

 

식별자(Identifiers)

 

쉽게 말해 변수명이다. 변수명을 쓸 땐 코드 컨벤션(Code convention, 개발자들 사이에 약속한 코드 작성 규칙)을 참고하면 좋다 낙타의 등과도 같은 카멜 표기법을 사용해 camelCase와 같이 변수를 선언해줄 수 있다.

 

형변환(casting)

 

명시적(explicit) 형변환과 암시적(implicit) 형변환이 있다. 

명시적 형변환은 괄호를 통해 변환하고자 하는 자료형을 넣어주면 된다. (long)num1; 과 같이

자동적으로 되는 암시적 형변환의 경우 작은 데이터 타입서 큰 데이터 타입으로 대입하는 경우이다.

byte num1 = 10;
int num2 = num1;

 

byte가 int보다 더 작은 데이터 타입이기 때문에 굳이 명시적 형변환을 안해도 자동적으로 형변환을 해주는 모습이다.

 

다만 큰 데이터 타입을 작은 데이터 타입으로 대입한다 하면 데이터 손실이 발생할 수도 있다.

 

초기화시 주의점

int num1, num2, num3 = 10; //num3만 10으로 초기화됨
int num1 = 10, num2 = 10, num3 = 10; //전부 10으로 초기화

 

첫번째 줄처럼 초기화하면 num3만 초기화될 수 있다.

 

주석 꿀팁

 

vscode에서 "ctrl + /" 맥이라면 "cmd + /" 를 통해 쉽게 문장을 주석화 할 수 있다.

 

계속 해서 작성

 

'C#' 카테고리의 다른 글

5/1 TIL - Delegate, Func, Action, 람다  (2) 2024.05.01
C# 인터페이스와 열거형  (1) 2024.04.26
C# 고급 문법 및 기능  (0) 2024.04.25
C# OOP와 클래스  (0) 2024.04.24
C# 연산자와 문자열 처리  (0) 2024.04.23