250x250
Rainbow๐ŸŒˆCoder
My dev Note๐Ÿ“’
Rainbow๐ŸŒˆCoder
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (411)
    • ๊ณต์ง€์‚ฌํ•ญ (0)
    • Debugger (10)
      • Visual Studio Debugger (1)
      • Chrome DevTools (3)
      • Visual Studio Code Debugger (4)
      • eclipse (1)
      • intelliJ (1)
    • OOP (2)
      • OOP (2)
    • TypeScript (54)
      • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ TypeScript (54)
    • Javascript (87)
      • Javascript (45)
      • Node.js (19)
      • React (5)
      • FE ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ค์ • (3)
      • React์™€ Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ (6)
      • next.js (2)
      • pixi.js (7)
    • ๋งˆํฌ์—… (23)
      • Html & Css (23)
    • C# (80)
      • C# (12)
      • ์ด๊ฒƒ์ด C#์ด๋‹ค (68)
    • C++ (30)
      • c++ (27)
      • win api (3)
    • Unity (18)
      • Unity(๊ธฐ์ดˆ) (8)
      • Unity(C#์ค‘๊ธ‰) (5)
      • ์œ ๋‹ˆํ‹ฐ ํฌํ†ค(๋„คํŠธ์›Œํฌ) (4)
      • unity c# MyCode (1)
    • Java & Spring (29)
      • Java (11)
      • ์Šคํ”„๋ง (8)
      • Java Algorithm (9)
      • Javs Data Structures (1)
    • ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (15)
      • ์ž๋ฃŒ๊ตฌ์กฐ (5)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (10)
    • ํ˜•์ƒ๊ด€๋ฆฌ (15)
      • Git (11)
      • ์†Œ์ŠคํŠธ๋ฆฌ (3)
    • ๊ทธ๋ž˜ํ”ฝ์Šค (7)
      • WebGl (7)
    • AWS (3)
      • aws (3)
    • ๋ฆฌ๋ˆ…์Šค (5)
      • ๋ฆฌ๋ˆ…์Šค (5)
    • ์ฑ… ๋ฆฌ๋ทฐ (13)
      • ํด๋ฆฐ์ฝ”๋“œ(์ฑ…๋ฆฌ๋ทฐ) (3)
      • ์œ ์ง€๋ณด์ˆ˜๊ฐ€๋Šฅํ•œ์ฝ”๋”ฉ์˜๊ธฐ์ˆ C#ํŽธ(์ฑ…๋ฆฌ๋ทฐ) (1)
      • ๋ฆฌํŒฉํ† ๋ง(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธํŒ) (9)
    • Server (2)
      • ๊ฒŒ์ž„ ์„œ๋ฒ„(๋„คํŠธ์›Œํฌ, ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ,OS) (2)
    • ์„ค๊ณ„, ์•„ํ‚คํ…์ณ (4)
    • ํŒŒ์ด์ฌ (5)
    • ๋””์ž์ธํŒจํ„ด (2)
    • mocha (2)
    • Jest (1)
    • Spine (1)
    • ์ธ๊ณต์ง€๋Šฅ (1)
      • ํ˜ผ์ž๊ณต๋ถ€ํ•˜๋Š”๋จธ์‹ ๋Ÿฌ๋‹+๋”ฅ๋Ÿฌ๋‹ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

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

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ์ปดํฌ์ง€์…˜
  • MySQL
  • ใ…ฃใ„ท
  • ์œ„์ž„

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Rainbow๐ŸŒˆCoder

My dev Note๐Ÿ“’

C#/์ด๊ฒƒ์ด C#์ด๋‹ค

42. [ํด๋ž˜์Šค/๋ ˆ์ฝ”๋“œ]๋กœ ๋ถˆ๋ณ€๊ฐ์ฒด ๊ตฌํ˜„ํ•˜๊ธฐ

2022. 2. 23. 11:38
728x90

*๋ ˆ์ฝ”๋“œ ํŒŒํŠธ์ด์ง€๋งŒ C# 9.0 ์ด์ƒ๋ถ€ํ„ฐ ์ง€์›ํ•˜๋Š” ๊ฐœ๋…์ด๋ผ ๋ณธ ๋ธ”๋กœ๊ทธ์—์„œ๋Š” ํด๋ž˜์Šค๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ”๋งŒ ๊ธฐ๋ก ๋‚จ๊ธฐ๊ธฐ๋กœ ๊ฒฐ์ •*

 

๋ถˆ๋ณ€ ๊ฐ์ฒด๋Š” ๋‚ด๋ถ€ ์ƒํƒœ(๋ฐ์ดํ„ฐ)๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๊ฐ์ฒด๋ฅผ ๋งํ•œ๋‹ค.

 

์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค๋Š” ํŠน์„ฑ ๋•Œ๋ฌธ์— ๋ถˆ๋ณ€ ๊ฐ์ฒด์—์„œ๋Š” ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ์™€ ๋น„๊ต๊ฐ€ ๋งŽ์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

 

์ƒˆ๋กœ์šด ์ƒํƒœ๋ฅผ ํ‘œํ˜„ํ•˜๋ ค๊ณ  (1)๊ธฐ์กด ์ƒํƒœ๋ฅผ ๋ณต์‚ฌํ•œ ๋’ค,
์ด ์ค‘(2) ์ผ๋ถ€๋ฅผ ์ˆ˜์ •ํ•ด์„œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ ,

(3) ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด ๋‚ด์šฉ์„ ์ž์ฃผ ๋น„๊ตํ•œ๋‹ค.

 

(๋ ˆ์ฝ”๋“œ๋Š” ๋ถˆ๋ณ€ ๊ฐ์ฒด์—์„œ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ด๋ค„์ง€๋Š” ์ด ๋‘ ๊ฐ€์ง€ ์—ฐ์‚ฐ์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก C# 9.0์—์„œ ๋„์ž…๋œ ํ˜•์‹์ด๋‹ค.)

 

์ฐธ์กฐ ํ˜•์‹์€ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ํ•„๋“œ๋ฅผ readonly๋กœ ์„ ์–ธํ•˜๋ฉด ๋ถˆ๋ณ€ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

๊ฐ’ ํ˜•์‹์€ readonly struct๋กœ ๊ตฌ์กฐ์ฒด๋ฅผ ์„ ์–ธํ•˜๋ฉด ๋œ๋‹ค.

์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ชจ๋“  ํ•„๋“œ๋ฅผ readonly๋กœ ์„ ์–ธํ•˜๋„๋ก ๊ฐ•์ œํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๊ฐ’ ํ˜•์‹ ๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์— ํ• ๋‹นํ•  ๋•Œ ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๊นŠ์€ ๋ณต์‚ฌ๋ž€ ๋ชจ๋“  ํ•„๋“œ๋ฅผ ์ƒˆ ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง„ ํ•„๋“œ์— 1:1๋กœ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. 

ํ•„๋“œ๊ฐ€ ๋งŽ์œผ๋ฉด ๋งŽ์„์ˆ˜๋ก ๋ณต์‚ฌ ๋น„์šฉ์€ ์ปค์ง„๋‹ค.(๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—” ๋” ์ปค์ง„๋‹ค.)

์ฐธ์กฐ ํ˜•์‹์€ ์œ„์™€ ๊ฐ™์€ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์—†๋‹ค. (๊ฐ์ฒด๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋งŒ ๋ณต์‚ฌํ•˜๋ฉด ๋˜๋‹ˆ๊นŒ)

๋‹ค๋งŒ, ์ฐธ์กฐ ํ˜•์‹์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ๋œ๋‹ค.

 

๊ฐ’ ํ˜•์‹์€ ๊ฐ์ฒด๋ฅผ ๋น„๊ตํ•  ๋–„ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด์šฉ์„ ๋น„๊ตํ•˜๋Š”๋ฐ ๋ชจ๋“  ํ•„๋“œ๋ฅผ 1:1๋กœ ๋น„๊ตํ•œ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ์ฐธ์กฐ ํ˜•์‹๋ผ๋ฆฌ ๋‚ด์šฉ ๋น„๊ต๋ฅผ ํ•  ์ˆ˜ ์žˆ์œผ๋ ค๋ฉด ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ๋น„๊ต ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.

[๋ณดํ†ต์€ object๋กœ๋ถ€ํ„ฐ ์ƒ์†ํ•˜๋Š” Equals() ๋ฉ”์†Œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•œ๋‹ค.]

 

๋ถˆ๋ณ€ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ˜•์‹์œผ๋กœ ์„ ์–ธํ•˜๋ฉด ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ธ์ˆ˜๋‚˜ ์ปฌ๋ ‰์…˜ ์š”์†Œ๋กœ ์‚ฌ์šฉํ•  ๋•Œ

๋ณต์‚ฌ ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

ํ•œํŽธ ๋ถˆ๋ณ€ ๊ฐ์ฒด๋Š” ์ƒˆ ์ƒํƒœ ํ‘œํ˜„๊ณผ ์ƒํƒœ ํ™•์ธ์„ ์œ„ํ•ด ๊นŠ์€ ๋ณต์‚ฌ์™€ ๋‚ด์šฉ ๋น„๊ต๊ฐ€ ํ•„์ˆ˜์ ์ด๋ฏ€๋กœ ๊ฐ’ ํ˜•์‹์œผ๋กœ ์„ ์–ธํ•˜๋Š” ํŽธ์ด ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ๋Š” ํŽธ๋ฆฌํ•œ ๋ถ€๋ถ„์ด ๋งŽ์„ ๊ฒƒ์ด๋‹ค.

๋ถˆ๋ณ€ ์ฐธ์กฐ ํ˜•์‹์˜ ๋น„์šฉ ํšจ์œจ๊ณผ ๋ถˆ๋ณ€ ๊ฐ’ ํ˜•์‹์˜ ํŽธ๋ฆฌํ•จ์„ ๋ชจ๋‘ ์–ป์„ ์ˆ˜ ์žˆ๋А ๋ฐฉ๋ฒ•์ด...๋ ˆ์ฝ”๋“œ ํ˜•์‹์ด๋‹ค. ^^

 

 

๋ ˆ์ฝ”๋“œ ํ˜•์‹์€ ๊ฐ’ ํ˜•์‹์ฒ˜๋Ÿผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๋ถˆ๋ณ€ ์ฐธ์กฐ ํ˜•์‹์œผ๋กœ,

์ฐธ์กฐ ํ˜•์‹์˜ ๋น„์šฉ ํšจ์œจ๊ณผ ๊ฐ’ ํ˜•์‹์ด ์ฃผ๋Š” ํŽธ๋ฆฌํ•จ์„ ๋ชจ๋‘ ์ œ๊ณตํ•œ๋‹ค.

 

<๋ ˆ์ฝ”๋“œ ์„ ์–ธ>

๋ ˆ์ฝ”๋“œ๋Š” record ํ‚ค์›Œ๋“œ์™€ ์ดˆ๊ธฐํ™” ์ „์šฉ ์ž๋™ ๊ตฌํ˜„ ํ”„๋กœํผํ‹ฐ๋ฅผ ํ•จ๊ป˜ ์ด์šฉํ•ด์„œ ์„ ์–ธํ•œ๋‹ค.

 

record RTransaction

{

     public string From     {get; init;}

     public string To         {get; init;}

     public string Amount {get; init;}

}

 

RTransaction tr1 = new RTransaction{From="Alice", To="Bob",Amount=100};

RTransaction tr2 = new RTransaction{From="Bob", To="Charlie", Amount = 300};

 

์œ„์™€ ๊ฐ™์ด ์„ ์–ธํ•œ ๋ ˆ์ฝ”๋“œ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๋ฉด ๋ถˆ๋ณ€ ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.

 

 

<with ํ‚ค์›Œ๋“œ ํ™œ์šฉ>

๋‹น์žฅ์€ ํ™œ์šฉ ์—ฌ์ง€๊ฐ€ ์—†์„ ๊ฒƒ ๊ฐ™์•„์„œ, ๊ธฐ๋ก ์ƒ๋žต-!

 

<๋ ˆ์ฝ”๋“œ ๊ฐ์ฒด ๋น„๊ตํ•˜๊ธฐ>

์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋ ˆ์ฝ”๋“œ์˜ ์ƒํƒœ๋ฅผ ๋น„๊ตํ•˜๋Š” Equals() ๋ฉ”์†Œ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ๊ตฌํ˜„ํ•œ๋‹ค.

-ํด๋ž˜์Šค ๊ฐ์ฒด ์ƒํƒœ ๋น„๊ต๋ฅผ ์œ„ํ•œ Equals() ๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ์˜ˆ์ œ

class CTransaction

{

     public string From     {get; init;}

     public string To        {get; init;}

     public int     Amount {get; init;}

 

     public override bool Equals(Object obj)

     {

         CTransaction target = ()obj;

         if(this.From == target.From && this.To == target.To && this.Amount == target.Amount)

                  return true;

         else    return false;

 

     }

}

Equals()๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” CTransaction์˜ ์ธ์Šคํ„ด์Šค ๋‘ ๊ฐœ๊ฐ€ ๊ฐ™์€ ์ƒํƒœ๋ฅผ ๊ฐ–๊ณ  ์žˆ์„ ๋•Œ,

์ด ๋‘˜์„ ๋น„๊ตํ•˜๋ฉด ์ฐธ(True)์ด ๋ฐ˜ํ™˜๋œ๋‹ค.

 

 

- ํ‰๋ฒ”ํ•œ ๋ ˆ์ฝ”๋“œ ์„ ์–ธ์˜ˆ์ œ(๋ ˆ์ฝ”๋“œ๋Š” ์ฐธ์กฐํ˜•์‹์ด์ง€๋งŒ ๊ฐ’ ํ˜•์‹์ฒ˜๋Ÿผ Equals() ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•„๋„ ๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค)

record CTransaction

{

     public string From     {get; init;}

     public string To        {get; init;}

     public int     Amount {get; init;}

}

 

 

<์˜ˆ์ œ> ํด๋ž˜์Šค๋กœ ๋ถˆ๋ณ€ ๊ฐ์ฒด ๊ตฌํ˜„ํ•˜๊ธฐ...์ด๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ ๊ทธ๋งˆ์ €๋„ ํ˜„์žฌ ๋‚˜์˜C# ์ปดํŒŒ์ผ๋Ÿฌ ๋ฒ„์ „ ์ˆ˜์ค€์ด ๋‚ฎ์€ ๊ด€๊ณ„์ƒ

ํ”„๋กœํผํ‹ฐ Init ๋Œ€์‹  set์œผ๋กœ ์ž‘์„ฑํ•˜์˜€๋‹ค..

Equals ๋น„๊ต ์—ฐ์‚ฐ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜๊ณ  ํ˜ธ์ถœํ•ด๋ณด๋Š” ๊ฒƒ์„ ํ•œ๋ฒˆ ๊ตฌ๋™ํ•ด๋ดค๋‹ค๋Š”๋ฐ ์˜์˜๋ฅผ ๋‘๊ธฐ๋กœ..

using System;

namespace Record
{
    class CTransaction 
    {
        public string From{ get; set; }
        public string To { get; set; }
        public int Amount { get; set; }
        public override string ToString()
        {
            return $"{From,-10} -> {To,-10} : ${Amount}";
        }
        public override bool Equals(object obj)
        {
            CTransaction target = (CTransaction)obj;
            if(this.From == target.From && this.To == target.To && this.Amount == target.Amount) return true;
            else return false;
        }
    }

    class MainApp
    {
        static void Main(string[] args)
        {
            CTransaction tr1 = new CTransaction { From="Alice", To="Bob",Amount=100 };
            CTransaction tr2 = new CTransaction { From = "Bob", To = "Charlie", Amount = 50 };

            Console.WriteLine(tr1);
            Console.WriteLine(tr2);
            Console.WriteLine($"tr1 equals to tr2 : {tr1.Equals(tr2)}");

            CTransaction tr3 = new CTransaction { From = "Charlie", To = "Alice", Amount = 50 };
            CTransaction tr4 = new CTransaction { From = "Charlie", To = "Alice", Amount = 50 };
            Console.WriteLine($"tr3 equals to tr4 : {tr3.Equals(tr4)}");

        }
    }
}

 

<์ถœ๋ ฅ ๊ฒฐ๊ณผ>

Alice      -> Bob        : $100
Bob        -> Charlie    : $50
tr1 equals to tr2 : False
tr3 equals to tr4 : True
728x90

'C# > ์ด๊ฒƒ์ด C#์ด๋‹ค' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

44. ์ธํ„ฐํŽ˜์ด์Šค์˜ ํ”„๋กœํผํ‹ฐ  (0) 2022.02.23
43. ๋ฌด๋ช… ํ˜•์‹  (0) 2022.02.23
41. ํ”„๋กœํผํ‹ฐ์™€ ์ƒ์„ฑ์ž  (0) 2022.02.22
40. ์ž๋™ ๊ตฌํ˜„ ํ”„๋กœํผํ‹ฐ  (0) 2022.02.22
39. ํ”„๋กœํผํ‹ฐ ๊ธฐ๋ณธํ˜• ์„ ์–ธ  (0) 2022.02.22
    'C#/์ด๊ฒƒ์ด C#์ด๋‹ค' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • 44. ์ธํ„ฐํŽ˜์ด์Šค์˜ ํ”„๋กœํผํ‹ฐ
    • 43. ๋ฌด๋ช… ํ˜•์‹
    • 41. ํ”„๋กœํผํ‹ฐ์™€ ์ƒ์„ฑ์ž
    • 40. ์ž๋™ ๊ตฌํ˜„ ํ”„๋กœํผํ‹ฐ
    Rainbow๐ŸŒˆCoder
    Rainbow๐ŸŒˆCoder
    ๋ชฐ๋ผ๋„ ๊ฒฐ๊ตญ์€ ์•„๋Š” ๊ฐœ๋ฐœ์ž, ๊ทธ๋Ÿฐ ์‚ฌ๋žŒ์ด ๋˜๊ธฐ ์œ„ํ•œ ๋งค์ผ์˜ ํ•œ๊ฑธ์Œ

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