[C# 8.0] ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ (3) - using ์„ ์–ธ, ๋„ ๋ณ‘ํ•ฉ ํ• ๋‹น์ž, ๊ตฌ์กฐ์ฒด ์ฝ๊ธฐ ์ „์šฉ ๋ฉค๋ฒ„

2023. 3. 12. 15:38ยท๐Ÿ“ Language/โœ C#

C# 8.0์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ

5. using ์„ ์–ธ

using ์„ ์–ธ์€ using ๋’ค์— ์žˆ๋Š” ๋ณ€์ˆ˜๊ฐ€ using์„ ๋‘˜๋Ÿฌ์‹ผ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚  ๊ฒฝ์šฐ Dispose ํ•˜๋„๋ก ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ์ง€์‹œํ•˜๊ฒŒ ๋œ๋‹ค.

  • Dispose๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฉฐ ๋” ์ด์ƒ ์ด ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์“ฐ์ง€ ์•Š๊ณ , ๊ด€๋ จ ๋ฆฌ์†Œ์Šค๋ฅผ ์ •๋ฆฌํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.
  • ๋ฉ”์„œ๋“œ๊ฐ€ ๋๋‚  ๋•Œ Dispose๋ฅผ ์ž๋™ ํ˜ธ์ถœํ•œ๋‹ค.
private void GetDataCS8()
{ 
    using var reader = new StreamReader("src.txt");
    string data = reader.ReadToEnd();
    Debug.WriteLine(data);
    
    // ์—ฌ๊ธฐ์„œ Dispose() ํ˜ธ์ถœ๋จ
}

 

6. ๋„ ๋ณ‘ํ•ฉ ํ• ๋‹น์ž(Null Coalescing Assignment)

ํ”ํžˆ NULL์„ ๋จผ์ € ์ฒดํฌํ•˜๊ณ  NULL์ด๋ฉด ์–ด๋–ค ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋งŽ์ด ์ž‘์„ฑํ•ด ์™”๋‹ค.

if (list == null)
   list = new List<int>();

 

C# 8.0์—์„œ๋Š” ๋”์šฑ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋„ ๋ณ‘ํ•ฉ ํ• ๋‹น์ž(Null Coalescing Assignment)์ธ ??= ์—ฐ์‚ฐ์ž๋ฅผ ์จ์„œ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

static List<int> AddData(List<int> list, int? a, int? b)
{
    list ??= new List<int>();
    list.Add(a ??= 1);
    list.Add(b ??= 2);

    return list;
}

 

7. ๊ตฌ์กฐ์ฒด ์ฝ๊ธฐ ์ „์šฉ ๋ฉค๋ฒ„

์ด์ „ ๋ฒ„์ „์—์„œ๋Š” ๊ตฌ์กฐ์ฒด(struct) ์ „์ฒด๋ฅผ readonly๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ, C# 8.0๋ถ€ํ„ฐ๋Š” ๊ตฌ์กฐ์ฒด์˜ ๊ฐ ๋ฉค๋ฒ„์— ๋Œ€ํ•ด ๊ฐœ๋ณ„์ ์œผ๋กœ readonly๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ๋งŒ์•ฝ ๊ตฌ์กฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋‚˜ ์†์„ฑ์ด ๊ตฌ์กฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด readonly๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , readonly ๋ฉค๋ฒ„๊ฐ€ ๋‹ค๋ฅธ non-readonly ๋ฉค๋ฒ„๋ฅผ ์•ก์„ธ์Šค ํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ Warning์„ ํ‘œ์‹œํ•œ๋‹ค.

 

 

์ €์ž‘์žํ‘œ์‹œ
'๐Ÿ“ Language/โœ C#' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [C#] struct ๋Œ€์‹  class๋ฅผ ์จ์•ผ ํ•  ๋•Œ
  • [C#] string ๊ฐ์ฒด ์‚ฌ์šฉ์—์„œ ํ”ํžˆ ํ•˜๋Š” ์‹ค์ˆ˜
  • [C# 8.0] ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ (2) - Nullable Reference Type, ์ธ๋ฑ์‹ฑ๊ณผ ์Šฌ๋ผ์ด์‹ฑ
  • [C# 8.0] ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ (1) - ๋””ํดํŠธ ์ธํ„ฐํŽ˜์ด์Šค ๋ฉค๋ฒ„, ํŒจํ„ด ๋งค์นญ
Blxxming
Blxxming
CS ์ง€์‹๊ณผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ฐฐ์šด ๊ฒƒ, ๊ฒฝํ—˜ํ•œ ๊ฒƒ ๋“ฑ์„ ๊ธฐ๋กํ•˜๋Š” ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
  • Blxxming
    ๐Ÿ’ก๋ฒˆ๋œฉ๐Ÿ’ก
    Blxxming
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๊ณต์ง€์‚ฌํ•ญ

    • Tech Interview
    • ๐Ÿ“š Tech (246)
      • ๐Ÿ“ Computer Science (96)
        • โœ OS (12)
        • โœ Network & Web (10)
        • โœ Database (11)
        • โœ Data Structure (6)
        • โœ Algorithm (40)
        • โœ Design Pattern (9)
        • โœ Cloud Computing (3)
        • โœ (5)
      • ๐Ÿ“ Language (73)
        • โœ Language (6)
        • โœ C & C++ (11)
        • โœ C# (19)
        • โœ JAVA (37)
      • ๐Ÿ“ Game (43)
        • โœ Computer Graphics (2)
        • โœ Unity (14)
        • โœ Unreal (26)
        • โœ (1)
      • ๐Ÿ“ Book (34)
        • โœ Effective (3)
        • โœ Game Server (16)
        • โœ Clean Code (14)
        • โœ (1)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Blxxming
[C# 8.0] ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ (3) - using ์„ ์–ธ, ๋„ ๋ณ‘ํ•ฉ ํ• ๋‹น์ž, ๊ตฌ์กฐ์ฒด ์ฝ๊ธฐ ์ „์šฉ ๋ฉค๋ฒ„
์ƒ๋‹จ์œผ๋กœ

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