TIL C# 입출력 처리 && using
C#은 입출력을 할 때 Console.WriteLine(), Console.ReadLine()을 사용한다.
출력
Console.WriteLine() 메서드에는 여러 가지 오버로딩이 있다.
주요 오버로딩은 다음과 같다.
- WriteLine() : 빈 줄을 출력
- WriteLine(string) : 문자열을 출력하고 줄 바꿈
- WriteLine(object) : 지정된 객체의 ToString()메서드를 호출한 결과를 출력
- WriteLine(string, object) : 지정된 형식에 따라 인수를 서식화하여 출력
- -printf()에서 %d, %f등을 사용해서 변수를 출력하는거랑 비슷출력 : The value is 42;{}안에 숫자는 각 인수의 인덱스
- 예시) Console.WriteLine("The value is {0}", 42);
- WriteLine(string, object, object) : 두 개의 인수를 지정된 형식에 따라 서식화하여 출력
- 예시) Console.WriteLine("X = {0}, Y = {1}", 10, 20);
- WriteLine($string) : $가 문자열 앞에 붙는 경우 {}안에 변수를 직접 넣어서 출력시키는게 가능하다.
- 예시)
- int x = 10, int y = 20;
- Console.WriteLine($"X = {x}, Y = {y}");
참고로 WriteLine은 자동으로 줄바꿈 처리를 한다.
줄바꿈 처리를 하기 싫으면 WriteLine 대신 Write사용
-------------------------------------------------------------------------------------
입력
Console.ReadLine()은 사용자의 입력을 항상 문자열로 받는다.
따라서 다른 데이터 타입으로 입력을 받으려면 변환 과정이 필요하다.
문자열 입력시
string input = Console.ReadLine();
다른 데이터 타입 입력받을시
int input = int.Parse(Console.ReadLine());
float input = float.Parse(Console.ReadLine());
double input = double.Parse(Console.ReadLine());
...
------------------------------------------------------------------------------------------
Using
C#에서 C++에 있는 using namespace와 비슷한 기능으로 using을 제공한다.
using 지시문을 사용해서 네임스페이스를 가져올 수 있지만 using은 C++의 using namespace와 약간 다르게 작동한다.
C#에서 Console 클래스는 System 네임스페이트에 속해 있다.
따라서 using System; 을 추가하는것으로 Console 앞의 System.을 생략할 수 있다.
이렇게 하면 Console.WriteLine() 대신 그냥 WriteLine()을 사용할 수 있을거 같지만, 실제로는 그렇지 않다.
Console은 정적 클래스이기 때문에 생략을 하고싶으면 using static 지시문을 사용해야한다.
using System;
using static System.Console;
위와 같이 추가하면 이제 Console.WriteLine()을 Console.을 생략하고 사용할 수 있다.
주의사항:
using static을 과도하게 사용하면 코드 가동성이 떨어질 수 있다.
예시) 여러 클래스에서 같은 이름의 정적 메서드를 가져오는 경우
using static은 C# 6.0 이상에서만 사용 가능하다.
IDE나 코드 에디터에 따라서 using static은 코드 자동 완성 기능을 저하시킬수 있다.