C#: C++에서 ++를 더 붙여 C++을 계승한다는 의미로 붙여진 객체지향 언어이자 .NET에 최적화된 언어

.NET(닷넷): 1900년대 말 마이크로소프트가 인터넷 서비스는 모든 종류의 기기에서 사용할 수 있어야 한다는 비전을 가지고 만들어진 플랫폼 사업적으로는 실패 하였으나 개발자들에게 .NET 클래스 라이브러리와 C#을 안겨주었다. 

CLR(Common Language Runtime): 모든 C#으로 만든 프로그램이 실행되는 곳

자바의 JVM 처럼 운영체제에서 일정 자원을 할당 받아서 C# 소스코드를 컴파일 및 실행 +가비지 컬렉터

목적: 자신이 설치한 플랫폼에 최적화시켜 컴파일한 후 실행시키기 위함 

 

실행과정(예시): 

1. 소스파일 컴파일시 아직 하드웨어가 이해할 수 없는 중간언어로 작성된 실행 파일 생성 

2. 사용자가 해당 파일을 실행시키면 CLR이 Just In Time(실시간) 컴파일 하여 하드웨어가 이해할 수 있는 네이티브 코드로 컴파일한 후 실행 

 

프로그램 파일 계층구조(예시): 

Hellow world 예제:

// 1번
using System; // 2번
using static System.Console; // 3번

namespace Hellow
{
    class MainApp
    {
        static void Main(String[] args)
        {
            System.Console.WriteLine("Hellow World"); // 1번
            Console.WriteLine("Hellow World"); // 2번
            WriteLine("Hellow World"); // 3번
        }
    }
}

using (~namespace): 뒤에 나올 namespace를 사용하겠다는 키워드 (비유: 자바에서의 import)

using static ~: 어떤 데이터 형식의 정적 멤버를 데이터 형식의 이름을 명시하지 않고 참조하겠다는 선언

대표적으로는 콘솔로부터 데이터를 출력 입력 받는 메소드들 Write(), Read()들이 존재

namespace: 하는 일(기능)이 비슷한 클래스, 구조체, 인터페이스, 대리자, 열거 형식 등을 하나의 이름 아래 묶어 둔 것

+만약 자바를 경험해본 사람이라면 namespace를 패키지 라고 생각하면 이해 하시는데 도움이 되실 겁니다.

static void Main(String[] args): 모든 프로그램이 실행되기 위해서는 반드시 하나 씩은 가지고 있어야 할 메소드(진입점)

 

   

 

+ Recent posts