cyphen156
C# 기초1 본문
이번에 .Net에 대해 배우기 전에 C#에 대해 정리하고 넘어갈 예정이다.
사실 나는 GC(Garbage Collector), VM(Vitual Machine) 환경을 별로 좋아하지 않는다. 오히려 싫어하는 편이다.
하지만 프로젝트 진행을 위해서 배워볼 예정이다.
C#은 MicroSoft에서 C/C++를 자바와 유사한 형태로 개발한 언어이다.
유니티때 스크립팅을 통해 잠깐 해봤던 기억을 떠올리면 플랫폼에 종속되지 않는, 가상 머신위에서 돌아가는 객체지향 컴파일 언어라고 기억된다. 하지만 실제로 사용해보면 컴파일 언어와 인터프리터 언어 둘 사이의 어딘가에 있는 것과 같은 느낌을 받은 언어라고 생각한다.
이런 C#의 핵심적인 특징이라면 단언코 .Net이라는 프레임 워크라고 할 수 있다.
MS는 .Net을 통해 C#, F#, Visual Basic.NET과 같은 언어들이 서로 다른 프로그래밍 언어임에도 불구하고 컴파일러를 거쳐 공통 언어 기반(Common Language Infrastructure)로 컴파일되고, 이 CLI는 다시 공통 언어 런타임(Common Language Runtime)을 거쳐 프로그램이 사용될 플랫폼에서 동작할 수 있는 맞춤형 기계어로 변형된다. 한마디로 C#을 통해 플랫폼에 종속적이지 않는 프로그램을 개발할 수 있다는 것이다.
이 방식은 크로스플랫폼 라이브러리(React/Vue/Flutter)와 상당히 유사하다.
.NET글에서 다시 정리할 예정이지만 .NET은 프로그램의 메인 타겟 플랫폼에 따라 사용되는 라이브러리/프레임워크가 다르다.
Windows 기반이라면 .NET 5(6/7/8), 웹 애플리케이션이라면 ASP.NET Core (with Blazor 또는 다른 크로스플랫폼 라이브러리), 모바일 환경이라면 .NET MAUI와 같은 템플릿 라이브러리가 존재한다.
C#을 사용하기 위해선 Visual Studio에 다음과 같은 관련 워크로드를 추가적으로 설치해줘야한다. 다 설치할 필요는 없고 4번만 선택해도 된다.
- ASP.NET 및 웹 개발 : Blazor를 통한 웹 앱 개발관련 워크로드
- Azuer 개발 : 서버 관련 워크로드
- .NET Multi-Platform App UI 개발 : MAUI를 활용하는 워크로드
- .NET 데스크톱 앱 개발 : WPF를 사용한 데스크톱 앱 개발 워크로드(필수)
유니버셜 Windows 플랫폼 개발: 지금은 버려진 UWP라는 기능이다. .NET Framework, UWP, Xamarin을 합쳐서 .NET MAUI로 대체되었다.
워크로드 추가 설치를 위해선
1. Visual Studio Installer를 실행시키고 수정을 누른다.
2. 설치할 워크로드를 선택하고 수정/설치를 누른다.
3. 프로젝트를 생성한다.
특이한 점은 사용 언어를 C#으로, 콘솔 앱 템플릿을 생성하고, .NET 버전은 6, 7, 8이 있는데 선택적 하위 호환이 되므로 8로 일단 생성한다.
** 최상위 문 사용 안 함 이라는 옵션이 존재하는데 저것은 간소화된 C#코드가 아닌 전체 C#코드를 보여주므로, CLI관련 코드까지 모두 보여주는 기능이다. C# 10버전 이상부터 지원되는데, .NET 8은 C# 12 문법을 사용한다.
*** 조금 더 자세히 설명하자면 문법 공부나 간단하게 프로젝트의 실행 파일이 하나의 C#파일로 구성될 때 main함수를 암시적으로 사용하는 방법이다. 이 방법을 사용하는 또 다른 언어는 python3 ~이 있어 간단한 스크립팅으로 프로젝트가 진행될 때 사용하는 편의 기능이다.
프로젝트 규모가 커지거나 여러개의 파일이 패키지화 되어 사용되어야 할 경우 최상위 문을 사용하지 않고, main 함수를 명시하여 프로그램에서 가장 핵심 파일이 어떤것이 될 지 명확하게 보여주는 역할을 할 수 있다.
4. F5키를 눌러 생성된 프로젝트를 실행해본다.
'프로그래밍 > C#' 카테고리의 다른 글
C# 버전별 핵심 기능 (1.0 ~ 7.0) (0) | 2023.12.01 |
---|---|
C# 실습 1 .NET 8 Winforms 앱 만들기 (0) | 2023.11.30 |
C#에서 클래스와 namespace(C++와 다른점 2) (0) | 2023.11.29 |
C# 기초2 C/C++와 다른점 (2) | 2023.11.28 |