πŸ“ Language

    [C#] string 객체 μ‚¬μš©μ—μ„œ ν”νžˆ ν•˜λŠ” μ‹€μˆ˜

    string 객체 μ‚¬μš©μ—μ„œ ν”νžˆ ν•˜λŠ” μ‹€μˆ˜ ν•œ λ©”μ„œλ“œ μ•ˆμ˜ 둜컬 λ³€μˆ˜λ“€μ€ κ·Έ λ©”μ„œλ“œκ°€ 끝날 λ•Œ ν•΄μ œν•˜κ²Œ λœλ‹€. Value νƒ€μž…μ˜ λ³€μˆ˜λŠ” ν•¨μˆ˜ 리턴과 λ™μ‹œμ— μŠ€νƒμ—μ„œ ν•΄μ œλ˜κ³ , Reference νƒ€μž…μ˜ λ³€μˆ˜λŠ” GC에 μ˜ν•΄ νž™μ—μ„œ μžλ™ ν•΄μ œλœλ‹€. μ—¬κΈ°μ„œ ν”νžˆ ν•˜λŠ” μ‹€μˆ˜ 쀑 ν•˜λ‚˜λŠ” 레퍼런슀 νƒ€μž…μ˜ 객체λ₯Ό λΆˆν•„μš”ν•˜κ²Œ λ„ˆλ¬΄ 많이 λ§Œλ“œλŠ” 것이닀. 예λ₯Ό λ“€μ–΄ μ•„λž˜ μ˜ˆμ œλŠ” string 객체λ₯Ό n개 μ”© 계속 μƒμ„±ν•˜κ³  μžˆλ‹€. public string Get1ToN_Bad(int n) { string s = ""; for (int i = 1; i

    [C# 8.0] μƒˆλ‘œμš΄ κΈ°λŠ₯ (3) - using μ„ μ–Έ, 널 병합 ν• λ‹Ήμž, ꡬ쑰체 읽기 μ „μš© 멀버

    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..

    [C# 8.0] μƒˆλ‘œμš΄ κΈ°λŠ₯ (2) - Nullable Reference Type, 인덱싱과 μŠ¬λΌμ΄μ‹±

    C# 8.0의 μƒˆλ‘œμš΄ κΈ°λŠ₯ 3. Nullable Reference Type 이전 λ²„μ „μ—μ„œλŠ” reference νƒ€μž…μ— null을 ν• λ‹Ήν•  수 μžˆμ–΄ Null Reference Exception이 자주 λ°œμƒλ˜κ³€ ν–ˆλ‹€. κ·Έλž˜μ„œ C# 8.0μ—μ„œλŠ” reference νƒ€μž…μ— null을 ν• λ‹Ήν•˜λ©΄ μ»΄νŒŒμΌλŸ¬κ°€ κ²½κ³ ν•˜λŠ” κΈ°λŠ₯을 μΆ”κ°€λ˜μ—ˆλ‹€. reference νƒ€μž…μ€ 기본적으둜 null을 넣을 수 μ—†λŠ” Non-nullable Reference Type이 되고, NULL을 ν—ˆμš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” 레퍼런슀 νƒ€μž… 뒀에 λ¬ΌμŒν‘œ(?)λ₯Ό λΆ™μ—¬ Nullable Reference Typeμž„μ„ ν‘œμ‹œν•΄μ•Ό ν•œλ‹€. Nullable Reference Type κΈ°λŠ₯은 λ””ν΄νŠΈλ‘œ Disable λ˜μ–΄ 있으며 μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” ν”„λ‘œμ νŠΈ λ ˆλ²¨μ΄λ‚˜ 파일 레벨, ν˜Ήμ€ μ†Œ..

    [C# 8.0] μƒˆλ‘œμš΄ κΈ°λŠ₯ (1) - λ””ν΄νŠΈ μΈν„°νŽ˜μ΄μŠ€ 멀버, νŒ¨ν„΄ 맀칭

    C# 8.0의 μƒˆλ‘œμš΄ κΈ°λŠ₯ λ””ν΄νŠΈ μΈν„°νŽ˜μ΄μŠ€ 멀버(Default Inteface Members) νŒ¨ν„΄ 맀칭 Nullable Reference Type 인덱싱과 μŠ¬λΌμ΄μ‹± 비동기 슀트림 using μ„ μ–Έ 널 병합 ν• λ‹Ήμž ꡬ쑰체 읽기 μ „μš© 멀버 정적 둜컬 ν•¨μˆ˜ λ¬Έμžμ—΄ 보간 토큰과 @ 토큰 μˆœμ„œ Unmanaged constructed type https://www.csharpstudy.com/Latest/CS8-def-itf-mem.aspx C# 8 λ””ν΄νŠΈ μΈν„°νŽ˜μ΄μŠ€ 멀버 - C# ν”„λ‘œκ·Έλž˜λ° 배우기 (Learn C# Programming) C# 8 : λ””ν΄νŠΈ μΈν„°νŽ˜μ΄μŠ€ 멀버 κ΅¬ν˜„ (Default Inteface Members) μ§€κΈˆκΉŒμ§€ (C# 8.0 이전) C#μ—μ„œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν•œλ²ˆ λ°°ν¬ν•œ ν›„, κ·Έ μΈν„°νŽ˜μ΄μŠ€λ₯Ό ..

    [C# 7.0] μƒˆλ‘œμš΄ κΈ°λŠ₯ (4) - μ’…λ£Œμž(Deconstructor), ref local, ref return

    C# 7.0의 μƒˆλ‘œμš΄ κΈ°λŠ₯ 6. μ’…λ£Œμž(Deconstructor) μ’…λ£Œμž(Deconstructor)λŠ” μƒμ„±μž(Constructor)와 λŒ€μΉ­μ μΈ κ°œλ…μ΄μ§€λ§Œ 파괴자(Destructor)μ™€λŠ” λ‹€λ₯΄λ‹€. μƒμ„±μžλŠ” 보톡 μ™ΈλΆ€μ—μ„œ μž…λ ₯ νŒŒλΌλ―Έν„°λ₯Ό λ°›μ•„λ“€μ—¬ 이λ₯Ό ν•„λ“œμ— μ €μž₯ν•˜λŠ” 역할을 ν•œλ‹€. μ’…λ£ŒμžλŠ” ν•„λ“œμ˜ 값듀을 μ™ΈλΆ€λ‘œ μ „λ‹¬ν•˜λŠ” 역할을 ν•œλ‹€. νŒŒκ΄΄μžλŠ” λΆˆν•„μš”ν•œ λ¦¬μ†ŒμŠ€λ₯Ό μ œκ±°ν•˜λŠ” 역할을 ν•œλ‹€. namespace ConsoleApp1 { class Program { static void Main(string[] args) { BasicInfo person = new BasicInfo(1, "Lee", 10); var (id, name, age) = person; WriteLine($"{id} - {name}"); } }..

    [C# 7.0] μƒˆλ‘œμš΄ κΈ°λŠ₯ (3) - out νŒŒλΌλ―Έν„°, λ¦¬ν„°λŸ΄ ν‘œν˜„

    C# 7.0의 μƒˆλ‘œμš΄ κΈ°λŠ₯ 4. out νŒŒλΌλ―Έν„° 이전 λ²„μ „μ—μ„œλŠ” λ©”μ„œλ“œ 호좜 μ‹œ out νŒŒλΌλ―Έν„°λ₯Ό μ‚¬μš©ν•  λ•Œ 미리 μ„ μ–Έ ν›„ μ‚¬μš©ν•΄μ•Ό ν–ˆλ‹€. μ΄λŠ” ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λŠ” λ¬Έμž₯ 밖에 λ³€μˆ˜λ₯Ό μ„ μ–Έν•¨μœΌλ‘œμ¨ λ³€μˆ˜κ°€ μ‚¬μš©λ˜λŠ” λ²”μœ„λ₯Ό λͺ…μ‹œμ μœΌλ‘œ μ§€μ •ν•˜λŠ” μ΄μœ λ„ μžˆμ—ˆλ‹€. 큰 λ¬Έμ œλŠ” μ•„λ‹ˆμ§€λ§Œ 번거둭게 느껴질 λ•Œκ°€ μžˆλ‹€. C# 7.0μ—μ„œλŠ” λ©”μ„œλ“œ 호좜 μ‹œ νŒŒλΌλ―Έν„° νƒ€μž…μ„ outκ³Ό ν•¨κ»˜ 지정할 수 μžˆλ„λ‘ ν•˜μ˜€λ‹€. μ΄λ ‡κ²Œ μ§€μ •λœ νŒŒλΌλ―Έν„°λŠ” μžμ‹ μ„ λ‘˜λŸ¬μ‹Ό 블둝 λ‚΄μ—μ„œλ§Œ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€. void Test() { // 이전 방식 //int x, y; //GetXY(out x, out y); // out νŒŒλΌλ―Έν„° GetXY(out int x, out int y); Console.WriteLine($"{x},{y}"); } out νŒŒλΌλ―Έν„° ..