C#: C++에서 ++를 더 붙여 C++을 계승한다는 의미로 붙여진 객체지향 언어이자 .NET에 최적화된 언어
.NET(닷넷): 1900년대 말 마이크로소프트가 인터넷 서비스는 모든 종류의 기기에서 사용할 수 있어야 한다는 비전을 가지고 만들어진 플랫폼 사업적으로는 실패 하였으나 개발자들에게 .NET 클래스 라이브러리와 C#을 안겨주었다.
CLR(Common Language Runtime): 모든 C#으로 만든 프로그램이 실행되는 곳
자바의 JVM 처럼 운영체제에서 일정 자원을 할당 받아서 C# 소스코드를 컴파일 및 실행 +가비지 컬렉터
목적: 자신이 설치한 플랫폼에 최적화시켜 컴파일한 후 실행시키기 위함
실행과정(예시):

1. 소스파일 컴파일시 아직 하드웨어가 이해할 수 없는 중간언어로 작성된 실행 파일 생성
2. 사용자가 해당 파일을 실행시키면 CLR이 Just In Time(실시간) 컴파일 하여 하드웨어가 이해할 수 있는 네이티브 코드로 컴파일한 후 실행
프로그램 파일 계층구조(예시):

Hellow world 예제:
// 1번
using System; // 2번
using static System.Console; // 3번
namespace Hellow
{
class MainApp
{
static void Main(String[] args)
{
System.Console.WriteLine("Hellow World"); // 1번
Console.WriteLine("Hellow World"); // 2번
WriteLine("Hellow World"); // 3번
}
}
}
using (~namespace): 뒤에 나올 namespace를 사용하겠다는 키워드 (비유: 자바에서의 import)
using static ~: 어떤 데이터 형식의 정적 멤버를 데이터 형식의 이름을 명시하지 않고 참조하겠다는 선언
대표적으로는 콘솔로부터 데이터를 출력 입력 받는 메소드들 Write(), Read()들이 존재
namespace: 하는 일(기능)이 비슷한 클래스, 구조체, 인터페이스, 대리자, 열거 형식 등을 하나의 이름 아래 묶어 둔 것
+만약 자바를 경험해본 사람이라면 namespace를 패키지 라고 생각하면 이해 하시는데 도움이 되실 겁니다.
static void Main(String[] args): 모든 프로그램이 실행되기 위해서는 반드시 하나 씩은 가지고 있어야 할 메소드(진입점)
'Development > C#' 카테고리의 다른 글
| C# 같은 솔루션의 폼에서 다른 프로젝트의 폼 띄우기 (0) | 2023.01.18 |
|---|---|
| C# WinForm Tap 순서 바꾸기, Tap이 가지 않도록 하기 (0) | 2022.12.29 |
| C# WinForm 폰트 설정 창 만들기 (0) | 2022.12.29 |
| C# GUI 개발 도구 WinForm (0) | 2022.12.27 |
| C# 콘솔 앱 에서 WinForm 실행시키기 .net 6.0 기준 (0) | 2022.12.25 |