Anna belly belly hard/C#

[C# 개념] 2.2 첫 번째 프로그램 뜯어보기

bibiana 각선행 2023. 6. 21. 14:12
반응형
using System;
using System.Data;
using static System.Console;

namespace Hello
{
    class MainApp
    {
       // 프로그램 실행이 시작되는 곳
       static void Main(string[] args)
        {
            if(args.Length == 0)
            {
                Console.WriteLine("사용법 : Hello .exe <이름>");
                return;
            }

            WriteLine("Hello, {0}!", args[0]);
        }
    }
}

2.2.1 using System;

- using  은 c#의 키워드중 하나.

- 키워드 : c#의 규격에 미리 정의 되어 있는 특별한 단어

- System : c# 코드에 기본적으로 필요한 클래스를 담고 있는 네임스페이스

- using System 은 system 네이스페이스 안에 있는 클래스를 사용하겠다고 컴파일러에 알리는 역할

- System.Console.WriteLine -> Console.WriteLine

- 세미콜론(;) : 컴파일러에 문장의 끝을 알리는 기호

 

2.2.2 using static System.Console;

- Console WriteLine -> WirteLine

- using 키워드만 사용하면 네임스페이스 전체를 사용한다는 의미

- using static 은 어떤 데이터형식(ex.클래스)의 정적 멤버를 데이터 형식의 이름을 명시하지 않고 참조하겠다고 선언하는 기능 

- System.Console 은 이러한 정적 멤버를 여럿 가지고 있따.

- 메소드 : 일련의 기능을 수행하는 명령어

- Write() , WriteLine() 메소드 , Read(), ReadLine() 메소드 : Console 클래스의 대표적인 정적 멤버

2.2.3 namespace Hello {}

- 네임스페이스 : 성격이나 하는 일이 비슷한 클래스, 구조체, 인터페이스, 대리자, 열거 형식 등을 하나의 이름 아래 묶는 일을 한다.

- System.IO 네임스페이스 : 파일 입출력을 다루는 각종 클래스, 구조체, 대리자 ,열거 형식등이 있다.

- System.Printing 네임스페이스 : 출력에 관련한 일을 하는 클래스 등이 소속

- .NET 클래스 라이브러리 에 1만개가 훨씬 넘는 클래스가 있어도 프로그래머가 전혀 혼돈을 느끼지 않고 이 클래스 를 사용할수 있는 비결이  이렇게 각 용도별/분야별로 정리되어 있는 네임스페이스에 있다.

<네임스페이스 만들기>

- 다음 네임스페이스 에서 MainApp 클래스를 사용하려면 using Hello; 문장을 이용해서 Hello 네임 스페이스를 참조하거나 Hello.MainApp 처럼 클래스가 소속되어 있는 네임스페이스와 클래스의 이름을 붙여 줘야 합니다.

2.2.4 class MainApp { }

- 클래스 : c# 프로그램을 구성하는 기본단위로서 데이터와 데이터를 처리하는 기능(메소드) 으로 이루어 집니다.

- C# 프로그램은 최소한 하나 이상의 클래스로 이루어지며, 수백 수천개의 클래스들로 구성되기도 한다.

- MainApp 클래스 안에는 Main() 메소드가 담겨있다.

 

2.2.5 //프로그램 실행이 시작되는 곳

- 한줄 주석 : // 

- /* */

 

2.2.6 static void Main(string[] args) { }

- static void Main(string[] args){} 는 특별한 메소드인데, 이 메소드는 프로그램의 진입점으로 프로그램이 시작하면 실행되고, 이 메소드가 종료되면 프로그램도 종료 됩니다.

- 따라서 모든 프로그램은 반드시 Main 이라는 이름을 가진 메소드를 하나 가지고 있어야 합니다.

- 다른 언어에서는 메소드를 서브루틴 이나 함수 라고 부르기도 한다.

- 메소드라는 용어는 객체지향 프로그래밍 세계에서 함수를 일컫는 말입니다. 객체지향 프로그래밍 에서는 모든 것이 객체이고, 함수는 객체의 일부로서 존재.

- 한정자(static) : 메소드나 변수등을 수식한다. c# 프로그램의 각 요소는 코드가 실행되는 시점에 비로소 메모리에 할당되는 반면, static 키워드로 수식되는 코드는 프로그램이 처음 구동 될때 부터 메모리에 할당된다는 특징이 있다.

- 프로그램이 실행되면 CLR(Common Language Runtime) 은 프로그램을 메모리에 올린 후 프로그램의 진입점을 찾는데, 이때 Main() 메소드가 static 키워드로 수식되어 있지 않다면 진입점을 찾지 못했다는 에러 메시지를 남기고 프로그램이 종료됩니다.

 

- 메소드의 반환 형식(void) : void는 비어있는 이라는 뜻으로 이 메소드가 어떤 결과도 돌려주지 않을 것 이라는 것을 컴파일러에게 알려주는 기능

- 메소드의 이름 (Main)

- 메소드의 입력되는 매개변수(string[] args) : Main 메소드의 매개변수는 조금 특별한데, 프로그램을 실행 할 때 입력하는 매개변수가 입력됩니다.

- 메소드의 코드블록 : 메소드가 실행 될때 실행할 세부 코드를 담습니다.

 

2.2.7 if(args.Length ==0) { }

- if 문은 조건을 평가해서 프로그램의 흐름을 결정하는 코드

- 우리 예제 프로그램에서는 매개변수 목록의 길이가 0 일때 안내문을 출력하고 프로그램을 종료 시킵니다.

- return : 원래 메소드의 호출자에게 메소드 실행결과를 돌려주는 역할을 하지만 ,여기서는 Main() 메소드를 종료하는 용도로만 사용했습니다.

반응형