본문 바로가기
Language/C#

[ C# ] .NET Framework와 C#언어

by 신인용 2020. 9. 1.
반응형

 

.NET Framework와 C#언어

 

 

1. .NET Framework

 .NET Framework는 예전에 넣고 뺄 수 있었지만 Window10에서는 운영체제의 한 부분으로 들어가 운영체제와 긴밀한 관계가 있어짐.

 C# MS에서 C,C++,Java의 장점만을 모아서 만든 가장 밀고 있는 언어임. 그러기에 많은 기능(라이브러리)를 제공하려고 해 많은 라이브러리가 존재함.

 

- 구성 요소

클래스 라이브러리와 CLR (Common Language Runtime)

우리가 기본적으로 다루는 부분 = 클래스 라이브러리

코딩된 내용이 파일로 작성됨. 이 파일을 실행하는 순간 데이터(*.exe) CLR로 넘김. exe파일의 소스코드를 OS에 맞게 재컴파일하게 되고 모든 OS에 실행되는 기계화 코드를 만들어냄.

 

 

- 클래스 라이브러리

C# 언어 + 클래스 라이브러리 = C# 프로그래밍

MSDN을 참고 msdn.Microsoft.com = MSDN의 소스코드는 표준코드라서 참고하면 좋음.

 

클래스 라이브러리

 BCL(Basic Class Library) : 기본 클래스

 Window Form : 윈도우 응용 프로그램 제작을 위한 클래스 라이브러리

 ASP.NET : 웹 클래스 라이브러리

 ADO.NET : 데이터베이스 클래스 라이브러리

 

 

- CLR(Common Language Runtime)

역할

 컴파일된 C# 코드를 실행하는 역할

 

MSIL, IL(intermediate Language), 중간언어

 Visual Studio에서 C#코드를 컴파일한 코드

 *.exe, *.dll (어셈블리, assembly) 

 닷넷 언어인 VB, C# 등의 공통 언어

 exe파일 자체가 바로 실행할 수 있는 기계어가 아니라 닷넷 프레임워크가 exe파일을 OS에 맞게 재컴파일해서 실행하는 것임. 또한 닷넷 프레임워크에서 작성한 C#,Visual Basic이든 간에 여기서 작성한 exe 코드들은 언어에 상관없이 서로 호환됨. 이것을 중간언어라 부름.

 

 

- CTS(Common Type System) CLS(Common Language Specification)

CTS는 공통 데이터형과 형식 정의.

 int -> System.Int32 = 객체형으로 바뀜.

 float -> System.Single = 객체형으로 바뀜.

 C#에서 쓰는 데이터형은 실제로 객체다.

 

CLS는 공통 언어 사양 정의

 닷넷 언어가 지켜야 할 최소 코드 규칙.

 키워드를 이상하게 쓴다든가 참조형을 써야 되는데 다른 형을 쓴다든가 등

 

 

 

 

 

 

2. C# 언어 개요

- C++언어 기반 + java 장점 = C#언어 (C언어를 모태로 삼음)

 

- C# 언어의 사용 범위

 XML, Web, Network, 데이터베이스, 게임, IoT 

 

- C#은 포인터를 사용하지 않는다

 사라진 것은 아니지만 권장하지 않음.(unsafe)

 메모리 관리자? = 다른 언어는 delete free로 해제하지만 프로그래머 실수로 메모리 누수가 발생하는 경우 발생.

 객체 생성 new -> 해제? = 가비지 컬렉터로 자동 해제

 

 

 

 

C# 프로그램 실행 과정

C# 언어 -> 컴파일 -> MSIL -> CLR -> 실행

                               *.exe 결과물

 

 

- 정리

닷넷 프레임워크의 구성 요소와 역할 이해

 BCL, IL, CLR, JIT, CTS 

 

컴파일부터 실행까지의 과정을 이해

 

 

반응형

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

[ C# ] C# 기본 문법  (0) 2020.09.02
[ C# ] 데이터형, 변환, 표준 입력형식  (0) 2020.09.01
[ C# ] C# 프로그래밍의 기본 구조  (0) 2020.09.01
[ C# ] StopWatch 구현  (0) 2019.08.12
C# Console 가지고 놀기 (명령어)  (0) 2019.08.10

댓글