C#과 .NET Framework

2023. 10. 8. 23:36·프로그래밍 언어/C#
C#은 C# 컴파일러를 통해 CIL로 변환된다. .NET은 JIT 컴파일러를 사용해서 CIL을 OS에 맞는 기계어로 변환시킨다.

.NET Framework

정의

  • Microsoft에서 개발한 플랫폼
  • C# 및 다른 .NET 언어로 갭발된 응용 프로그램을 실행하는데 사용된다.
  • 공통 런타임 및 클래스 라이브러리를 제공한다.

특징

  1. 크로스 플랫폼 지원
    • .NET 5 이후의 버전은 Windows, macOS, Linux와 같은 다양한 운영체제에서 실행될수있다.
  2. x86, x64등 다양한 하드웨어 아키텍처 지원
    • 서버, 데스크톱, 모바일 및 임베디드 장치와 같은 다양한 플랫폼에서 사용 가능

C#

정의

  • Microsoft에서 개발한 프로그래밍 언어

특징

  1. 객체지향 프로그래밍 언어
    • 클래스와 객체를 사용해서 데이터와 동작 캡슐화
  2. 강력한 형식의 언어
    • 강력한 형식 언어 : 데이터 유형의 안전성을 강조하고, 데이터의 타입을 엄격하게 검사해서 프로그램의 안정성을 향상시키는 언어
      • 변수와 데이터 타입을 컴파일 시간에 명시적으로 선언하고 검사하는 정적 타입 언어를 지원하여 컴파일러가 코드의 안정성을 보장하고, 타입 불일치로 인한 오류를 줄인다.
      • C# 컴파일러는 변수와 메서드의 사용을 엄격하게 검사한다. 잘못된 타입의 값을 할당하려고 하거나 올바르지 않은 형변환를 시도하면 컴파일 오류를 발생시킨다.
      • 제너릭(Generic)을 지원해서 컴파일 시점에 타입 안전성을 제공한다. 
  3. 이벤트 기반 프로그래밍 지원
    • 이벤트 기반 프로그래밍 : 프로그램에서 발생하는 이벤트(사용자의 동작, 외부 입력등..)에 대응해서 코드를 실행하고 처리하는 프로그래밍 패러다임
    • 이벤트(event)와 대리자(delegate) 제공
      • 이벤트(event) : 클래스나 객체가 다른 클래스나 객체에게 어떤 상황이나 동작이 발생했을을 알리기 위한 매커니즘. 특정 조건이 충족됬다면 미리 정의된 메서드(이벤트 핸들러)를 호출하도록 설계된다.
      • 대리자(delegate) : 메서드에 대한 참조를 저장하고 호출할 수 있는 형식. 이벤트 핸들러를 등록하고 호출하는데 사용된다.
      • 이벤트 핸들러(event handler) : 이벤트가 발생했을 때 호출되는 메서드. 이벤트 핸들러는 대리자(delegate)를 통해 이벤트에 연결된다.
  4. 크로스 플랫폼 지원
    • .NET 5 or .NET Core를 통해 다양한 OS로의 이식성을 제공한다.

.NET과 C#

  1. C# 코드는 C# 컴파일러에 의해 중간언어인 CIL(Common Intermediate Language)로 변환된다.
  2. CIL 코드는 플랫폼에 독립적이며 특정 플랫폼과는 무관하다.
  3. .NET 응용 프로그램을 실행할 때 .NET 프레임워크의 CLR(Common Language Runtime)에 내장된 JIT(Just-InTime) 컴파일러가 CIL 코드를 해당 응용프로그램이 실행되는 컴퓨터 아키텍처에 맞는 네이티브 기계 코드로 변환한다.
  4. 기계 코드는 프로세서에서 직접 실행된다.

'프로그래밍 언어 > C#' 카테고리의 다른 글

비동기 프로그래밍  (0) 2023.12.25
람다식 () =>  (0) 2023.11.01
스택 프레임(Stact Frame)과 스택 오버 플로우(Stack Overflow)  (0) 2023.10.03
컴파일(Compile)과 런타임(Runtime)  (0) 2023.10.03
메모리 구조  (0) 2023.10.02
'프로그래밍 언어/C#' 카테고리의 다른 글
  • 비동기 프로그래밍
  • 람다식 () =>
  • 스택 프레임(Stact Frame)과 스택 오버 플로우(Stack Overflow)
  • 컴파일(Compile)과 런타임(Runtime)
가든_
가든_
  • 가든_
    Code Garden
    가든_
  • 전체
    오늘
    어제
    • 글 목록 (60)
      • 프로그래밍 언어 (11)
        • JAVA (0)
        • C++ (2)
        • C# (9)
      • 개발툴 (24)
        • Visual Studio (0)
        • Visual Studio Code (1)
        • Eclipse (1)
        • Unity (19)
        • Unreal (0)
        • Spring (1)
        • SpringBoot (0)
        • Vue (2)
      • 디자인 패턴 (6)
      • 백엔드 (4)
        • MySQL (1)
        • Servlet (3)
      • 프론트엔드 (4)
        • HTML (3)
        • CSS (0)
        • Javascript (1)
      • 알고리즘 (10)
        • 공식 (3)
        • 백준 (6)
        • SW Expert Academy (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    행동 UML 다이어그램
    Proxy 패턴
    SetTile
    Unity
    12738
    컴파일 상수
    클래스 어댑터
    Factory 패턴
    Abstract Factory 패턴
    MVC
    HTML
    Adaptee
    FixedUpdate
    chatGPT
    RDBM
    Reflex
    Adapter 패턴
    스택
    오브젝터 어댑터
    swea2112
    c#
    구조패턴
    런타임 상수
    상태공간트리
    UniRX
    구조적 UML 다이어그램
    Java
    ()=>
    다이어그램 그리기
    DI
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
가든_
C#과 .NET Framework
상단으로

티스토리툴바