Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
Today
Total
관리 메뉴

I'm FanJae.

[20260402] C#이란? 본문

Unity/Unity 초격차캠프

[20260402] C#이란?

FanJae 2026. 4. 2. 09:44

1. 요약 정리

C#은 Microsoft가 2000년에 발표한 객체 지향 언어이다.

객체 지향 언어란, 데이터를 객체 단위로 묶어 프로그램을 구성하는 방식을 의미한다.

 

프로그램을 만들 때 세상의 모든 것을 '사물'의 단위로 나눠서 생각하는 것이다.

1-1. C#의 특징

① 강력한 타입(TYPE) 시스템

변수. 즉, 데이터를 담는 공간의 종류(TYPE)을 선언하고, 엉뚱한 값을 담으려고 하면 컴파일 단계에서 이를 잡는다.

보통 이런 부류의 언어를 '강타입 언어(Strongly typed Language)'로 분류한다.

 

장점은 실행 전에 오류를 미리 찾아 낸 다는 점이고, 단점은 변수 선언시 종류를 명시해야 한다는 점이다.

② 자동 메모리 관리

C#은 가비지 컬렉션(Garbage Collection)을 통해 메모리(데이터 저장 공간)를 자동으로 청소해준다.

일반적으로 C에서 사용하던 free()와 같은 메모리 해제 코드를 직접 사용하지 않아도 된다.

 

가비지 컬렉션의 경우 상당히 개념이라서 별도의 관련 문서를 페이지 맨 아래쪽에 별도 링크를 남겨두었다.

 

③ .NET 플랫폼

.NET은 C# 프로그램을 실행하기 위한 플랫폼이며, C# 코드는 .NET 런타임 위에서 실행된다.

C# 코드는 IL(중간 언어)로 컴파일을 진행한다. 

실행 시점에 .NET 런타임의 JIT 컴파일러가 현재 운영체제와 CPU 환경에 맞는 네이티브 코드로 변환한다. 

그래서 같은 C# 코드를 다양한 운영체제(Windows, macOS, Linux)에서 실행할 수 있다.

 

④ 풍부한 라이브러리와 생태계

C# 프로그램은 사물 인터넷(IoT) 기기부터 클라우드까지 다양한 기기에서 실행될 수 있다.

또, 웹(ASP.NET), 데스크톱(WPF, WinForms), 모바일(Xamarin), 게임(Unity) 등 모든 분야를 커버한다.

 

나의 경우 이중에서 WinForms와 Unity를 다뤄본 경험이 있다.

2. OOP(Object Oriented Programming)

프로그램을 객체(물건, 역할) 단위로 나누어 설계하고 구현하는 방식을 의미한다.

현실 세계의 '자동차'에 대해서 '속성'과 '기능'을 나누면 다음과 같이 나뉘게 된다.

 

속성 : 색상, 속도, 연료량 

기능 : 출발, 멈추기, 가속하기

※ 이외에도 여러 속성, 기능이 존재할 것이다.

 

OOP에서는 이러한 속성과 기능을 데이터, 기능으로 묶어서 '객체'로 관리하는 것이다.

2-1. 객체 지향 프로그래밍의 4가지 특징

1) 캡슐화 (Encapsulation)

데이터와 기능을 하나로 묶고, 외부에서 내부 데이터를 함부로 건드리지 못하게 하는 것이다.

즉, 연관 있는 데이터와 기능을 함께 두고, 내부 상태는 보호한 채 정해진 방식으로만 접근하도록 만든다.

 

2) 추상화 (Abstraction)

복잡한 내부 구현은 숨기고, 사용자에게 필요한 핵심 기능만 보여주는 것이다.
즉, 객체를 사용하는 입장에서는 내부가 어떻게 동작하는지 몰라도 된다.

무엇을 할 수 있는지만 알면 사용할 수 있게 만드는 것이다.

 

3) 상속 (Inheritance)

상속은 기존 클래스의 기능을 물려받아 새로운 클래스를 만드는 개념이다.

예를 들어 동물 클래스에 먹기, 잠자기 같은 공통 기능이 있다면,

개와 고양이는 이를 상속받아 공통 기능을 그대로 사용할 수 있다.
또한 각 클래스는 자신만의 고유한 기능을 추가하여 확장할 수 있다.

 

즉, 상속은 공통된 기능은 재사용하고, 필요한 기능은 새롭게 추가하는 방식이다.

 

4) 다형성 (Polymorphism)

다형성(Polymorphism)은 하나의 기능이나 메서드가 여러 형태로 동작할 수 있는 개념이다.
예를 들어, 동물의 울기 기능을 개와 고양이가 각각 다르게 구현하면,

같은 기능을 호출하더라도 객체에 따라 다른 결과가 나타난다.

 

즉, 다형성은 같은 인터페이스로 서로 다른 동작을 수행할 수 있게 하는 특징이다.

3. 관련 문서

Microsoft, 「가비지 컬렉션 기본 사항」 https://learn.microsoft.com/ko-kr/dotnet/standard/garbage-collection/fundamentals 

 

 

 

 

 
 
Comments