본문 바로가기
  • 식초 한잔 할래..?
공부/게임 공부

C# 기초 문법 [ 배열과 리스트 , 클래스와 인스턴스 ]

by 돼지피그푸곰 2025. 10. 1.

배열은 같은 타입의 테이터들을 고정된 크기로 저장한다.

크기가 변경이 불가능하지만, 고정되어 있는 만큼 빠르게 접근이 가능하다.

 

반면에 리스트는 크기가 가변적이라 속도는 조금 느리지만 유연하게 대처가 가능하다.

 

배열 vs 리스트 비교

크기 고정 가변
선언 int[] arr = new int[5]; List<int> list = new List<int>();
크기 확인 .Length .Count
요소 추가/삭제 불가능 (새 배열 생성 필요) Add(), Remove()
접근 속도 빠름 약간 느림 (내부적으로 배열 관리)
사용 상황 크기가 정해져 있고 변경 필요 없는 경우 크기가 자주 변하거나 관리가 유연해야 하는 경우

using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        // ===== 배열 예제 =====
        Console.WriteLine("=== 배열(Array) 예제 ===");
        string[] fruitsArray = new string[3];  // 크기 고정
        fruitsArray[0] = "사과";
        fruitsArray[1] = "바나나";
        fruitsArray[2] = "체리";

        for (int i = 0; i < fruitsArray.Length; i++)
        {
            Console.WriteLine(fruitsArray[i]);
        }
        // fruitsArray[3] = "포도"; // ❌ 배열은 크기 초과 불가

        // ===== 리스트 예제 =====
        Console.WriteLine("\n=== 리스트(List) 예제 ===");
        List<string> fruitsList = new List<string>();
        fruitsList.Add("사과");
        fruitsList.Add("바나나");
        fruitsList.Add("체리");

        foreach (string fruit in fruitsList)
        {
            Console.WriteLine(fruit);
        }

        fruitsList.Add("포도"); // ✅ 리스트는 크기 가변적
        fruitsList.Remove("바나나"); // 특정 요소 삭제

        Console.WriteLine("\n리스트 수정 후:");
        foreach (string fruit in fruitsList)
        {
            Console.WriteLine(fruit);
        }
    }
}

 

 




클래스는 큰 범위에 있는 설계도라고 볼 수 있습니다.

인스턴스는 그 설계도를 보고 구성된 결과물로서, 클래스를 실제로 만든 객체로 볼 수 있습니다.

 

 

클래스와 인스턴스 비교

의미 객체의 설계도 설계도로 만든 실제 객체
메모리 코드(정의)로만 존재 new 키워드로 메모리에 생성
역할 속성과 기능을 정의 정의된 기능을 실제로 사용
예시 Player 클래스 new Player() 로 만든 객체

using System;

class Player   // 클래스 정의 (설계도)
{
    // 속성(필드)
    public string name;
    public int hp;

    // 기능(메서드)
    public void Attack()
    {
        Console.WriteLine($"{name}이(가) 공격합니다!");
    }

    public void ShowStatus()
    {
        Console.WriteLine($"[플레이어: {name}, 체력: {hp}]");
    }
}

class Program
{
    static void Main(string[] args)
    {
        // 인스턴스 생성
        Player player1 = new Player();
        player1.name = "전사";
        player1.hp = 100;

        Player player2 = new Player();
        player2.name = "마법사";
        player2.hp = 80;

        // 메서드 사용
        player1.ShowStatus(); // [플레이어: 전사, 체력: 100]
        player1.Attack();     // 전사이(가) 공격합니다!

        player2.ShowStatus(); // [플레이어: 마법사, 체력: 80]
        player2.Attack();     // 마법사이(가) 공격합니다!
    }
}

'공부 > 게임 공부' 카테고리의 다른 글

C#으로 간단한 게임 만들기  (0) 2025.10.13
Text-RPG 만들어 보기  (1) 2025.10.02
C# 기초 문법 [ 문자열 처리 ]  (0) 2025.10.01
C# 기초 문법 [ 반복문 ]  (0) 2025.10.01
C# 기초 문법 [ 메서드 ]  (0) 2025.10.01