Language/C#

[C#] C# 개요 및 입출력

nowkoes 2024. 8. 5. 18:54

개요

<본 카테고리는 "닷넷 정복 C#" 책을 기반으로 작성하였습니다>


C# 개요

개요

출처: https://namu.wiki/w/C%23

 

  C#은 Microsoft가 개발한 현대적이고 강력한 객체지향 프로그래밍 언어로, 다양한 응용 프로그램을 개발하는 데 사용된다. C#은 .NET Framework와 .NET Core(현재는 .NET 5+로 통합됨)에서 주로 사용되며, 가비지 컬렉션 기능을 내장하여 메모리 관리를 자동으로 수행한다. 다음은 C#의 주요 특징이다.

 

완전한 객체지향 언어

  • C#은 클래스와 객체를 중심으로 설계된 완전한 객체지향 언어
  • 상속, 다형성, 캡슐화 등의 객체지향 프로그래밍의 핵심 개념을 지원

 

가비지 컬렉션

  • C#은 가비지 컬렉션을 통해 불필요한 메모리를 자동으로 해제
  • 개발자가 직접 메모리를 관리할 필요가 없어 메모리 누수를 줄일 수 있음

 

안전한 코드

  • 포인터를 기본적으로 제공하지 않으며, 안전하지 않은 코드 영역(unsafe)에서만 포인터를 사용
  • 타입 안전성과 경계 검사 등을 통해 버퍼 오버런과 같은 오류를 방지

 

강력한 형식 시스템:

  • C#은 강력한 형식 검사와 엄격한 타입 시스템을 갖추고 있어, 컴파일 타임에 많은 오류를 잡을 수 있음
  • 제네릭을 지원하여 타입 안전성을 유지하면서도 재사용 가능한 코드를 작성할 수 있음

 

풍부한 라이브러리:

  • .NET 라이브러리(BCL, Base Class Library)를 통해 다양한 기능을 쉽게 사용
  • 데이터 구조, 파일 입출력, 네트워킹, 데이터베이스 액세스, GUI, XML 처리, JSON 처리 등의 기능을 제공

 

다중 플랫폼 지원:

  • C#은 Windows뿐만 아니라, macOS, Linux에서도 실행할 수 있는 크로스 플랫폼 지원을 제공
  • .NET Core 및 .NET 5+를 통해 다양한 플랫폼에서 애플리케이션을 개발

 

 

 오늘부터 이러한 특징을 가진 C#의 문법들에 대해 알아보는 시간을 가지도록 하자.


본문

네임스페이스

 닷넷에서 입출력 기능은 System 네임스페이스의 Console 클래스가 제공한다. 여기서 네임스페이스(namespace)란 닷넷의 방대한 공용 라이브러리인 BCL(Base Class Library)을 효율적으로 관리하기 위해 나눈 공간이라고 생각하면 된다. 즉, 명칭을 저장하는 장소이며 명칭의 범위를 격리시키는 역할을 한다. 이때 C#에선 함수나 변수가 네임스페이스 안에 직접 선언될 수 없고, 클래스나 구조체의 멤버로 선언되어야 한다는 점 알아두자.

 

같은 네임스페이스에서는 같은 이름의 클래스가 존재하면 에러가 뜨지만(좌), 다른 네임스페이스의 경우 상관이 없다(우)

 

네임스페이스 안에 필드나 메서드 같은 멤버를 포함하면 에러가 뜬다


using 문

 고유한 네임스페이스 안에서 명칭을 자유롭게 만들 수 있다는 것은 분명 장점이다. 하지만 협업을 하던지, 혹은 프로젝트를 진행하다 보면 명칭을 참조하는 문장이 필연적으로 길어진다. 이로 인해 번거로움과 오타 발생 확률이 높아져 오히려 생산성이 떨어질 수 있다. 그래서 긴 참조문을 짧게 쓸 수 있는 using 문장이 제공된다. using 다음에 참조할 네임스페이스 명을 적으면 컴파일러가 using 선언된 네임스페이스를 항상 참조한다.

 

using문을 사용하기 전(좌)과 후(우)


입출력

 입출력 기능을 사용하려면 앞서 언급했던 using문을 이용해 System 선언을 해주고, Console 메서드를 통해 모니터에 문자열을 출력하고 키보드 등으로부터 입력을 받을 수 있다.

 

using System;

namespace ex
{
    class ex1
    {
        static void Main(string[] args)
        {
            Console.Write("Hello");
            Console.Write(" World!\n");
            Console.WriteLine("Hello " + "World!");

            string str = "World!";
            Console.WriteLine($"Hello {str}");
        }
    }
}

 

 C#에서 주로 사용하는 출력 메서드Write 혹은 WriteLine이다. 전자는 줄 바꿈을 지원하지 않고, 후자는 자동으로 줄을 바꾸어준다. 이때 여러 개의 변수를 한 번에 출력할 때는 문자열과 + 연산자를 사용하여 연결하거나, 문자열 리터럴 앞에 $를 붙이는 보간(Interpolation)을 사용할 수도 있다. 이 외에 형식을 지정하거나, 자릿수와 정밀도 등을 설정할 수도 있으니, 해당 내용은 공식 문서를 참조하면 좋을 것 같다.

 

using System;

namespace ex
{
    class ex1
    {
        static void Main(string[] args)
        {
            Console.Write("Write your age: ");
            int age = Convert.ToInt32(Console.ReadLine());

            Console.Write("Write your last name: ");
            string name = Console.ReadLine();

            Console.WriteLine($"age: {age}, last name: {name}");
        }
    }
}

 

 콘솔의 입력 메서드ReadLine()이다. 문자열로 입력받기 때문에 만약 다른 자료형이 필요하다면 문자열로 받은 후 변환해서 사용해야 한다. 만약 문자열이나 정수 등의 자료형이 아닌 키 자체를 입력받을 때ReadKey()라는 메서드를 호출해야 한다. 키 하나만 입력받기 때문에 엔터키를 누르지 않아도 즉시 리턴된다. 해당 내용은 추후에 반복문과 연계해서 설명해 주도록 하겠다.


요약

C# 입출력
1. 입력: Console.ReadLine()
2. 출력: Console.WriteLine(), Console.Write()
반응형

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

[C#] 타입(1) 값 형식의 변수  (0) 2024.08.06
[C#] WinForm Console 띄우기  (0) 2024.07.10
[C#] JSON 파싱 및 DLL 배포(1)  (0) 2024.07.09
[C#] 반응형 GUI  (0) 2024.07.07