C#

[C# ๊ธฐ์ดˆ๊ณต๋ถ€] ๋ฐ•์‹ฑ๊ณผ ์–ธ๋ฐ•์‹ฑ

zoozoo2 2023. 1. 4. 02:29

๐ŸŸจ ๋ฐ•์‹ฑ(boxing)

๋ฐ์ดํ„ฐ ํ˜•์„ ์ตœ์ƒ์œ„ object ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํž™(heap ๋ฉ”๋ชจ๋ฆฌ)์— ์ €์žฅ

int m =123;

object obj = m;

 

๐ŸŸจ์–ธ๋ฐ•์‹ฑ(unboxing)

ํž™์— ์ €์žฅ๋œ ํ˜•์‹์„ ๋‹ค์‹œ ์›๋ž˜์˜ ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜

int n = (int)obj;

 

๐ŸŽˆ intํ˜• ๊ฐ’์„ ๋ฐ•์‹ฑ ํ•œ ํ›„์— ๋‹ค์‹œ ์–ธ๋ฐ•์‹ฑํ•˜์—ฌ ์ถœ๋ ฅํ•ด ๋ณด์ž

๐ŸŽˆ ๋ฐ•์‹ฑ๊ณผ ์–ธ๋ฐ•์‹ฑ ๊ณผ์ •์—์„œ ๋ฉ”๋ชจ๋ฆฌ(heap)์˜ ๊ณต์œ ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ๋˜๋Š” ๋ณต์‚ฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์ž!

namespace ConsoleApp4
{
    class MyClass
    {
        static void Main(string[] args)
        {
           int i = 123;
            object obj = i;
            Console.WriteLine((int)obj);

            int j = 123;
            object o = j;
            j = 455;
            Console.WriteLine(j);
            Console.WriteLine((int)o);

        }
    }
}

์ถœ๋ ฅ ๊ฒฐ๊ณผ

heap ๋ฉ”๋ชจ๋ฆฌ ๊ณต์œ ๊ฐ€ ์•„๋‹Œ ๋ณ„๋„์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค!