본문 바로가기

C#/기본 문법

C# 클래스 형식 변환

 

 

 

 

전체 코드


 

using Rookiss_CSharp;
using System;
using System.Diagnostics.Metrics;
using System.Numerics;

namespace Rookiss_CSharp
{
    // https://www.inflearn.com/course/%EC%9C%A0%EB%8B%88%ED%8B%B0-mmorpg-%EA%B0%9C%EB%B0%9C-part1?srsltid=AfmBOopkXVxKs-MQPYZkTjEYW-yIDMO5xP7l5hQq0hQasUWhobvyKO6N
    // 42강 클래스 형식 변환

    // 객체지향(OOP): 은닉성, 상속성, 다형성

    class Player
    {
        protected int hp;
        protected int attack;
    }

    class Knight : Player
    {

    }

    class Mage : Player
    {
        public int mp;
    }

    class Program()
    {
        static void EnterGame(Player player)
        {
            // bool isMage = (player is Mage); // Mage 인지
            Mage mage = (player as Mage); // Mage로 캐스팅
            // is보다 as가 더 깔금해서 as로 사용하기를 추천

            if (mage != null)
            {
                mage.mp = 10;
            }
        }

        static void Main(string[] args)
        {
            // knight 변수는 stack 메모리
            // new Knight()는 heap 메모리
            Knight knight = new Knight();

            Mage mage = new Mage();


            // Mage 타입 -> Player 타입
            // Player 타입 -> Mage 타입 ?
            Player magePlayer = mage; // 업캐스팅 가능
            Mage mage2 = (Mage)magePlayer; // 다운 캐스팅은 명시적 형변환 필요

            // Q) Knight -> Player -> Mage로 형변환시
            // 원래 Knight 타입이었으나 컴파일 단계에서는 에러 안남(실제 싱행시 crash남)
            // 컴파일 과정에서 에러 확인 불가함

            // 자식 -> 부모 변환시 아무 문제 없음
            // 부모 -> 자식 변환시에 될수도 있고 안될 수 있음(case by case)
            // 그러므로, is 연산으로 비교하거나, as 연산자로 캐스팅해서 확인해야함
            // is 연산자 : 객체가 특정 형식이나 해당 형식의 파생 형식인지 확인하는데 사용
            // as 연산자 : 객체를 지정된 형식으로 변환함(성공시 변환된 객체, 실패시 null)

            EnterGame(knight);
            EnterGame(mage);
        }
    }
}

 

 

 

 

 

 

 


 

 

 

출처


https://www.inflearn.com/course/%EC%9C%A0%EB%8B%88%ED%8B%B0-mmorpg-%EA%B0%9C%EB%B0%9C-part1?srsltid=AfmBOopkXVxKs-MQPYZkTjEYW-yIDMO5xP7l5hQq0hQasUWhobvyKO6N

 

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문| Rookiss - 인프런 강

현재 평점 4.9점 수강생 6,987명인 강의를 만나보세요. 기초 프로그래밍 지식이 없는 사람들을 위한 C# 프로그래밍 기초 강의입니다. 문법 암기 위주의 수업이 아니라, 최대한 필요한 부분만을 요

www.inflearn.com

42강 클래스 형식 변환

'C# > 기본 문법' 카테고리의 다른 글

C# 문자열 둘러보기  (0) 2025.11.05
C# 다형성  (0) 2025.11.05
C# 은닉성  (0) 2025.11.02
C# 상속성  (0) 2025.11.02
C# static  (0) 2025.11.01