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://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 |