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์ ํ์ํ๋ค.