본문 바로가기

Programming

[C#] 이란

C#이란

마이크로소프트에서 닷넷의 주력 언어로 개발

.NET FRAMEWORK(가상머신) 위에서 실행됨

더보기

 

 

그렇다면 닷넷이란?

운영체제, 가전 제품 상관없이 프로그램이 실행될 수 있으면 좋겠다~에서 시작한 개발환경

CLR 실행엔진(Common Language Runtime)을 통해

소스 코드를 IL로 컴파일-> JIT으로 컴파일 하여 기계어로 변환

 

장점 : 

1. 플렛폼 독립성을 보장하여 한 번 만든 소프프웨어를 여기저기에서 실행할 수 있는 장점을 가짐

 

2. CLS (Common Language Runtime) 

닷넷에서 실행될 수 있는 최소한의 언어 규칙이 존재하기 때문에 언어 상호 교환이 가능

 

 

 

C# 특징

1. 자료형  object

모든 자료형의 최상위 부모 클래스

박싱/언박싱 게시글로 이동->https://uyism28.tistory.com/10

 

 

 

2. ref/ out

C++의 포인터와 비슷한 개념

ref : call by reference 로 값이 전달됨

out : ref와 달리 초기화 하지 않아도 사용할 수 있음 (@TODO 왜 존재하는지 아직 이해 안됨)

 

 

 

3. new 

대체적으로 동적할당 같아 보인다. 하지만 아니다.

new Vector는 스택에 쌓인다! 게시글로 이동->https://uyism28.tistory.com/

 

또한, C++과 다르게 메모리 해제는 가비지 컬렉터가 돌면서 사용하지 않는 힙 메모리 값들은 수거한다.

메모리 릭을 막기 위한 Week Reference 사용 게시글로 이동->https://uyism28.tistory.com/

 

 

 

4. 확장 클래스, 분할 클래스, 중첩 클래스

확장 클래스 : 모르겠음

분할 클래스 : partial 키워드를 통해 따로 작성되어도 컴파일할 때 하나의 클래스로 합쳐진다.

중첩 클래스 : 클래스 내 클래스를 선언해서 사용, 해당 클래스 내에서만 사용할 수 있음

 

 

 

5. (C# ver6)널 연산자(?./?[])

null일 경우 해당 문장을 실행하지 않고 넘어감, 수많은 null 예외처리를 생략 가능하게 해줌

 

 

 

6. (C# ver6) 문자 보간법

int age = 10
string name = "이름"
$"나이는 {age}이고 이름은 {name}이다" // $로 변수임을 명시해주면 변수값을 넣은 문자열이 출력됨  

 

 

 

참고 링크

https://blog.hexabrain.net/

https://3dmpengines.tistory.com/1566

 

 

 

 

남은 과제

서식 지정자

params

비트 연산은 어디에 쓰이는 물건인가?

컴파일러와 링커, 그래서 구체적으로 뭘 하는건지

sealed, internal

C# 버전 6 이상 살펴보기

'Programming' 카테고리의 다른 글

문자열 리터럴 상수  (0) 2020.04.04
빌드 과정  (0) 2020.03.18
소켓 프로그래밍  (0) 2020.03.03
[C++]가상 함수  (0) 2020.03.03
C#의 Delegate - CallBack 만들기  (0) 2020.02.25