input, enum의 활용, 값 형식,참조 형식, Boxing,산술연산
2023. 7. 20.

using System;

namespace LearnDotnet
{
    enum eRace
    {
       Terran = 1,
       Protoss = 2,
       Zerg = 3
    }
    internal class Program
    { 

        static void Main(string[] args)
        {
            Console.Write("(1.테란, 2.프로토스, 3.저그) 종족의 번호를 입력하세요:");
            
            //입력받아 그 값을 input이라는 변수에 저장하기
            string input = Console.ReadLine();
            Console.WriteLine("당신이 입력한 값은:{0}입니다",input);
            //문자열-> 정수형-> 열거형 으로 변환
            int intInput = Convert.ToInt32(input);
            eRace selectedRace = (eRace)intInput;
            //eRace selectedRace = (eRace)Convert.ToInt32(input);으로 쓸 수도 있다.

            //eRace selectedRace = eRace.Terran;
            Console.WriteLine("당신이 선택한 종족은 {0}입니다.", selectedRace);
        }
    }
}

 

변수를 저장하면 스택 메모리가 할당된다.

스택메모리에 저장되는 값형식이라 한다.

 

힙에 저장되는 형식은 참조형식이라 한다.

참조형식은 스택과 힙 메모리 모두를 사용한다.

: 스택 메모리에 값이 저장되어있는 주소를 저장하기 때문이다.

 

null 은 개체를 참조하지않는 null 참조를 나타내는 리터럴이다.

즉, null은 아무것도 참조하지 않는 값이다. -> '값'이므로 변수에 넣을 수 있다.

null은 참조 형식 변수의 기본값이다.

 

다음과 같이 코드를 작성할 수도 있다.

using System;

namespace LearnDotnet
{
    
    internal class Program
    { 

        static void Main(string[] args)
        {
            Console.WriteLine("--> {0}",null);//아무것도 출력되지않음: 널값이 나왔으나 안보이는것.
            string name = null;
            Console.WriteLine("name: {0}", name);
        }
    }
}

 

Boxing은 값 형식을 object 형식으로 변환하는 프로세스이다.(object형식은 원래 참조형식이다.)

Unboxing은 object형식에서 값형식으로 변환하는 프로세스이다.

Boxing은 암시적이며 Unboxing은 명시적이다.

 

using System;

namespace LearnDotnet
{
    
    internal class Program
    { 

        static void Main(string[] args)
        {
            int i = 123;
            object obj = i;//박싱 : 암시적
            //object obj = (object)i;로 명시적으로 나타낸 것이다.
            //쓸수도있고, 안쓸수도있다.

            //언박싱
            int ii = (int)obj;//명시적
        }
    }
}

 

'C# 기초' 카테고리의 다른 글

for문 연습문제 나머지(5~14)+도전문제  (0) 2023.07.20
비교 연산자, if문, for문  (0) 2023.07.20
var, const, 열거형  (0) 2023.07.20
스타크래프트  (0) 2023.07.19
캐스팅  (0) 2023.07.19
myoskin