02. ์ƒ์„ฑ์ž์™€ ์ข…๋ฃŒ์ž

2022. 4. 6. 09:12ยท๐Ÿ’ป Programming Language/C#
  • CLR(Common Language Runtime) => Garbage Collector ๋ฅผ ํฌํ•จ/ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์‹คํ–‰ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ.
  • Garbage Collector => ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌ
CLR์˜ Garbage Collector๊ฐ€ ๊ฐ์ฒด๊ฐ€ ์†Œ๋ฉธ๋˜๋Š” ์‹œ์ ์„ ํŒ๋‹จํ•ด์„œ ์ข…๋ฃŒ์ž๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. 

์ข…๋ฃŒ์ž๋Š” ๋  ์ˆ˜ ์žˆ๋Š”ํ•œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

  • ๊ธฐ๋ณธ์ƒ์„ฑ์ž : ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์ด ์‚ฌ์šฉํ•˜๋Š” ์ƒ์„ฑ์ž
  • ์‚ฌ์šฉ์ž ์ง€์ • ์ƒ์„ฑ์ž : ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง€๋Š” ์ƒ์„ฑ์ž์ด๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ๋ณ„๋„๋กœ ์„ ์–ธํ•ด์•ผํ•จ. ์ด๋•Œ ์‚ฌ์šฉ์ž ์ง€์ • ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ ๋‹ค๋ฉด ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋Š” ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜์ง€ ์•Š์Œ. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž ์ง€์ • ์ƒ์„ฑ์ž๋ฅผ ์„ ์–ธํ•˜์˜€์„๋•Œ ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋ณ„๋„๋กœ ์„ ์–ธํ•ด ์ฃผ์–ด์•ผํ•จ.
  • ์ข…๋ฃŒ์ž : ํด๋ž˜์Šค์˜ ์ด๋ฆ„์— ~ ๋ฅผ ๋ถ™ํžŒ ํ˜•ํƒœ
    ์ƒ์„ฑ์ž์™€ ๋‹ฌ๋ฆฌ ํ•œ์ •์ž๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜๋„ ์—†๋‹ค. ๋˜ํ•œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ข…๋ฃŒ์ž๋ฅผ overloading๋„ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ง์ ‘ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๋‹ค.
  • ๋ฌธ์ž ํฌ๋งทํŒ… : $
    C# 6.0 ์—์„œ๋Š” ํฌ๋งทํŒ…์„ ํ•  ๋•Œ $ ๊ธฐํ˜ธ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  ์žˆ๋‹ค.๋‹จ, $๊ธฐํ˜ธ๋Š” ๋ฌธ์ž์—ด์— ๋ฐ”๋กœ ๋ถ™์—ฌ์•ผ๋จ. ๊ณต๋ฐฑ์—†์ด.
  • Console.WriteLine("{0} ๋‹ค์Œ์— ๋ดฌ์š”!", name); ๋Œ€์‹ ์— Console.WriteLine(\$"{name}๋‹˜ ๋‹ค์Œ์— ๋ดฌ์š”!"); ๋ฅผ ์‚ฌ์šฉ

C# App์˜ System ๊ตฌ์กฐ

C# Application

=> build => ์ปดํŒŒ์ผ๋œ ILํŒŒ์ผ์„ CLR์ด ์ฝ์–ด๋“ค์ž„
|Common Language Runtime (CLR)|
|--------------|

=> OS, H/W ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” low ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ => ์ ์žฌ์ ์†Œ์— ๋ณ€ํ™˜ (Just In Time(JIT) Compile)
|.Net Framework|
|--------------|

Window
HardWare
class ํด๋ž˜์Šค๋ช… {

    //์ƒ์„ฑ์ž ์„ ์–ธ ํ˜•์‹
    ํ•œ์ •์ž ํด๋ž˜์Šค๋ช…(๋งค๊ฐœ๋ณ€์ˆ˜๋ชฉ๋ก){
        ...
    }


    //์ข…๋ฃŒ์ž ์„ ์–ธ ํ˜•์‹
    ~ํด๋ž˜์Šค๋ช…(){
        ...
    }
}

using System;
using System.Threading;

namespace ConDeEx
{
    class Cat
    {
       public string name;
       public string color;

       public Cat()
        {
            name = "";
            color = "";
        }

        public Cat(string _name, string _color)
        {
            name = _name;
            color = _color;
        }

        ~Cat()
        {
            Console.WriteLine($"{name} : ์ž˜๊ฐ€");
        }

        public void Meow()
        {
            Console.WriteLine($"{name} : ์•ผ์˜น");
        }

    }

    class MainApp
    {
        static void Main(string[] args)
        {
            Cat a = new Cat("ํ‚คํ‹ฐ", "ํ•˜์–€์ƒ‰");
            a.Meow();
            Console.WriteLine($"{a.name} {a.color}");

            Cat b = new Cat("๋„ค๋กœ", "๊ฒ€์ •์ƒ‰");
            b.Meow();
            Console.WriteLine($"{b.name} {b.color}");
        }
    }
}
Output

ํ‚คํ‹ฐ : ์•ผ์˜น
ํ‚คํ‹ฐ ํ•˜์–€์ƒ‰
๋„ค๋กœ : ์•ผ์˜น
๋„ค๋กœ ๊ฒ€์ •์ƒ‰

'๐Ÿ’ป Programming Language > C#' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

06. ์ ‘๊ทผ์ œํ•œ์ž(Access Modifier)  (0) 2022.04.06
05. this, this() ์ƒ์„ฑ์ž  (0) 2022.04.06
04. ๊นŠ์€ ๋ณต์‚ฌ์˜ ์ดํ•ด (Deep Copy)  (0) 2022.04.06
03. static ํ•„๋“œ์™€ static ๋ฉ”์†Œ๋“œ  (0) 2022.04.06
01. ํด๋ž˜์Šค์™€ ๊ฐ์ฒด  (0) 2022.04.05
'๐Ÿ’ป Programming Language/C#' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • 05. this, this() ์ƒ์„ฑ์ž
  • 04. ๊นŠ์€ ๋ณต์‚ฌ์˜ ์ดํ•ด (Deep Copy)
  • 03. static ํ•„๋“œ์™€ static ๋ฉ”์†Œ๋“œ
  • 01. ํด๋ž˜์Šค์™€ ๊ฐ์ฒด
S.Honey
S.Honey
  • S.Honey
    Algo ์“ฐ์ž
    S.Honey
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (123)
      • ํšŒ๊ณ  (0)
        • ์ทจ์—… ํ›„ ํšŒ๊ณ  (0)
      • ๐Ÿƒ Frontend Road-Map (2)
        • ๐Ÿšฉ Summary (1)
        • ๐Ÿ“š Road-Map Contents (1)
        • ๐ŸŸง HTML (0)
        • ๐ŸŸฆ CSS (0)
        • ๐ŸŸจ Javascript (0)
        • โฌœ React (0)
        • ๐ŸŸช Redux (0)
      • Backend (0)
        • QueryDSL (0)
      • ๐Ÿ’ป Programming Language (54)
        • C# (51)
        • Flutter-Dart (3)
        • Java (0)
      • ๐Ÿ“š Computer Science (4)
        • Algorithms (4)
        • Database (0)
        • Network (0)
        • Operating System(OS) (0)
      • ๐Ÿ’ฏ CodingTest (60)
        • BaekJoon (22)
        • Programmers (34)
        • CodeTree (4)
      • โœ’๏ธ Design Pattern (1)
      • ๐Ÿฑ Etc (2)
        • Jenkins Plugin ์ œ์ž‘๊ธฐ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ๋งํฌ

    • ๊ณต์ง€์‚ฌํ•ญ

      • ๐Ÿ“– ๊ณต๋ถ€ ์ฐธ๊ณ  ๊ต์žฌ ๋ฐ ์ž๋ฃŒ
    • ์ธ๊ธฐ ๊ธ€

    • ํƒœ๊ทธ

      ์ฝ”๋“œํŠธ๋ฆฌ
      Java
      BAEKJOON
      ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
      JS
      ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
      ์‚ผ์„ฑsw์—ญํ…Œ
      ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰
      DP
      ์•Œ๊ณ ๋ฆฌ์ฆ˜
      sort
      BFS
      JavaScript
      ์Šคํ„ฐ๋””
      ๋ฐฑ์ค€
      ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      ์นด์นด์˜ค
      ์ž๋ฃŒ๊ตฌ์กฐ
      ์“ฐ์…จ์ž–์•„
      ์‹œ๋ฎฌ๋ ˆ์ด์…˜
      c#
      ํŒŒ์ด์ฌ
      Flutter
      DART
      ๊ตฌํ˜„
      programmers
      ์ด์ง„ํƒ์ƒ‰
      ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
      Algorithm
      ๋ฌธ์ž์—ด ํŒŒ์‹ฑ
    • ์ตœ๊ทผ ๋Œ“๊ธ€

    • ์ตœ๊ทผ ๊ธ€

    • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
    S.Honey
    02. ์ƒ์„ฑ์ž์™€ ์ข…๋ฃŒ์ž
    ์ƒ๋‹จ์œผ๋กœ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”