TIL

TIL C# 입출력 처리 && using

hunhun4949 2024. 8. 14. 17:40

C#은 입출력을 할 때 Console.WriteLine(), Console.ReadLine()을 사용한다.

 

출력

Console.WriteLine() 메서드에는 여러 가지 오버로딩이 있다.

주요 오버로딩은 다음과 같다.

  1. WriteLine() : 빈 줄을 출력
  2. WriteLine(string) : 문자열을 출력하고 줄 바꿈
  3. WriteLine(object) : 지정된 객체의 ToString()메서드를 호출한 결과를 출력
  4. WriteLine(string, object) : 지정된 형식에 따라 인수를 서식화하여 출력
    • -printf()에서 %d, %f등을 사용해서 변수를 출력하는거랑 비슷출력 : The value is 42;{}안에 숫자는 각 인수의 인덱스
    • 예시) Console.WriteLine("The value is {0}", 42);
  5. WriteLine(string, object, object) : 두 개의 인수를 지정된 형식에 따라 서식화하여 출력
    • 예시) Console.WriteLine("X = {0}, Y = {1}", 10, 20);
  6. 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은 코드 자동 완성 기능을 저하시킬수 있다.