Notice
Recent Posts
Recent Comments
Link
«   2025/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
Tags more
Archives
Today
Total
관리 메뉴

맛있는 개발노트 (맛과 개발을 함께)

C# 세미나 자료: 형식의 기초 (Basics of Types) 본문

C# 학습/C# 언어의 기초

C# 세미나 자료: 형식의 기초 (Basics of Types)

DevGourmet 2025. 4. 7. 09:18

1. 개요

C#은 정적 타입 언어로, 모든 데이터는 형식(Type)을 기반으로 정의되고 처리됩니다. 본 세미나에서는 형식 시스템의 기초, 미리 정의된 형식과 커스텀 형식, 형식의 구성 멤버, 그리고 기정의 형식과 사용자 정의 형식의 대칭성에 대해 초급~고급 단계별로 살펴봅니다.


2. 기본 이론

2.1 형식이란?

  • 형식(Type): 값의 범위와 허용되는 연산을 정의하는 규칙 집합
  • C#에서는 모든 값은 형식을 가지고 있으며, 모든 형식은 System.Object를 기반으로 함

2.2 주요 분류

  • 값 형식(Value Type): int, double, bool, struct, enum 등 (스택에 저장)
  • 참조 형식(Reference Type): class, string, object, interface, delegate 등 (힙에 저장)

3. 단계별 설명

3.1 초급: 미리 정의된 형식

이론 요약

  • C#은 .NET에서 제공하는 다양한 **기본 형식(Built-in types)**을 정의
  • 이들은 System.Int32, System.Boolean 등으로 연결됨

예시 코드

int number = 10;          // System.Int32
float pi = 3.14f;         // System.Single
bool isReady = true;      // System.Boolean
string message = "Hello"; // System.String

주의사항

  • 기본형은 키워드 형태(int, bool)로 사용하지만 .NET 형식명도 동일하게 동작
  • 값 형식은 null을 가질 수 없음 (nullable로 선언 가능: int?)

3.2 중급: 사용자 정의 형식 (Custom Type)

이론 심화

  • 사용자 정의 형식은 class, struct, enum, interface, record 등으로 구현 가능
  • 필요한 데이터와 동작을 함께 캡슐화

예시 코드

// 클래스 정의
class Person
{
    public string Name;
    public int Age;

    public void SayHello()
    {
        Console.WriteLine($"안녕하세요, 저는 {Name}입니다.");
    }
}

// 구조체 정의
struct Point
{
    public int X;
    public int Y;
}

// 열거형 정의
enum DayOfWeek
{
    Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
}

  • 구조체는 가벼운 데이터 표현에 적합하며 값 형식임
  • 클래스는 참조 형식이므로 복사 시 참조 전달

3.3 고급: 형식의 멤버와 대칭성 이해

이론 고급

  • 모든 형식은 **멤버(Members)**를 가질 수 있음:
    • 필드, 속성, 메서드, 생성자, 이벤트, 인덱서, 연산자 오버로딩 등
  • .NET 기본 형식도 내부적으로 class, struct로 정의되어 있음 → 사용자 정의 형식과 대칭적 구조

예시 코드

// 기본 형식도 메서드와 속성을 가짐
int number = 123;
Console.WriteLine(number.ToString());   // int는 ToString 메서드를 가짐

// 사용자 정의 형식 예시
class Calculator
{
    public static int Add(int a, int b) => a + b;   // 메서드
    public int Result { get; set; }                 // 속성
}

실무 관점 팁

  • 형식을 설계할 때 필요한 멤버를 효율적으로 배치해야 유지보수에 유리
  • 기본 형식과 유사한 방식으로 사용자 형식을 정의할 수 있음 → 학습 곡선 완화

4. 형식 설계 시 고려사항

요소설명

명확성 의미 있는 이름 부여
불변성 필요 시 readonly 또는 immutable 설계
캡슐화 접근 제한자(public/private) 사용
대칭성 .NET 기본 형식처럼 통일성 있게 설계

5. 결론

  • C#에서 모든 값은 형식을 기반으로 함
  • 미리 정의된 형식과 사용자 정의 형식은 유사한 구조를 가짐
  • 형식의 멤버를 이해하면 더 유연하고 확장 가능한 구조 설계 가능
  • 기본 형식과 커스텀 형식의 대칭성은 C# 학습과 실무 설계에서 매우 중요한 개념

6. Q&A

  • Q: 구조체와 클래스의 가장 큰 차이는? A: 구조체는 값 형식, 클래스는 참조 형식입니다.
  • Q: 사용자 정의 형식에도 메서드를 정의할 수 있나요? A: 네, 필드, 속성, 메서드 등 다양한 멤버를 정의할 수 있습니다.
  • Q: 기본형도 메서드를 가지나요? A: 네. 예를 들어 intToString(), CompareTo() 등의 메서드를 가집니다.

감사합니다!