์์ดํ 1. ์ง์ญ๋ณ์๋ฅผ ์ ์ธํ ๋๋ var๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ซ๋ค.
var ํค์๋๋ ์์์ ํ์ ์ ์ง์ญ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉํ๋๋ฐ ๋์ ๋ ๊ฐ์ ํ์ ์ผ๋ก ๊ฒฐ์ ๋๋ค.
์ง์ญ๋ณ์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ณ ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐํ๋ฅผ ํด์ผ ํ๋ค.
- ์ ํํ ๋ฐํ ํ์ ์ ์์ง ๋ชปํ ์ฑ ์ฌ๋ฐ๋ฅด์ง ์์ ํ์ ์ ๋ช ์์ ์ผ๋ก ์ง์ ํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํ๋ค. ex) IQueryable <T>๋ฅผ IEnumerable <T>๋ก ๊ฐ์ ํ๋ณํ
- ํ์ ์ ์ ์ถํ ์ ์๋ ๋ณ์ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ผ ์ ์๋ค.
๊ทธ๋ฌ๋...
์ ์ ํ์ดํ์ ํผ์์ํจ๋ค: ๋์ ํ์ดํ์ด ์ํ๋๋ ๊ฒ์ด ์๋๋ผ ์ปดํ์ผ๋ฌ๊ฐ ํ์ ์ ์ถ๋ก ํ์ฌ ๊ฒฐ์ ํ๋ค.- ๊ณผ๋ํ ์ฌ์ฉ์ผ๋ก ์ฝ๋์ ๊ฐ๋ ์ฑ์ ํด์น๊ฑฐ๋ ๋ฐ๊ฒฌํ๊ธฐ ์ด๋ ค์ด ๋ฒ๊ทธ๋ฅผ ๋ง๋ค์ด ๋ผ ์ ์๋ค.
- ๊ฐ๋ฐ์๊ฐ ์๊ฐํ ํ์ ๊ณผ ์ปดํ์ผ๋ฌ๊ฐ ์ถ๋ก ํ ํ์ ์ด ๋ฌ๋ผ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค.
- ์ ๋ฐ๋ ์์ค์ด ๋ฐ์ํ๋ฏ๋ก ๋ด์ฅ ์ซ์ ํ์ (int, float, double ๋ฑ)๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด ์ ๋๋ค.
์ฝ๋๋ฅผ ์ฝ์ ๋ ํ์ ์ ๋ช ์์ ์ผ๋ก ๋๋ฌ๋ด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด var๋ฅผ ์ฌ์ฉํ์.
์์ดํ 2. const ๋ณด๋ค๋ readonly๊ฐ ์ข๋ค.
์ปดํ์ผ ํ์ ์์(const)๋ ์ปดํ์ผ ํ์์ ๋ณ์๊ฐ ๊ฐ์ผ๋ก ๋์ฒด๋๋ค.
- ๋ด์ฅ ์๋ฃํ์ด์ด์ผ๋ง ์ปดํ์ผํ์์ ์์๋ฅผ ๋ฆฌํฐ๋ด๋ก ๋์ฒดํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ด์ฅ๋ ์ซ์ํ, enum, ๋ฌธ์์ด, null์ ๋ํด์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- ๋ฉ์๋ ๋ด๋ถ์์ ์ ์ธ์ด ๊ฐ๋ฅํ๋ค.
- ๋ช ๋ช ๋ ๋งค๊ฐ๋ณ์, ์ ํ์ ๋งค๊ฐ๋ณ์
๋ฐํ์ ์์(readonly)๋ ์์์ ๋ํ ์ฐธ์กฐ๋ก ์ปดํ์ผ๋์ด ๋ฐํ์์ ๊ฐ์ด ํ๊ฐ๋๋ค.
- ์ด๋ค ํ์ ๊ณผ๋ ํจ๊ป ์ฌ์ฉ๋ ์ ์๋ค.
- ๋ฉ์๋ ๋ด๋ถ์์ ์ ์ธ์ด ๋ถ๊ฐ๋ฅํ๋ค.
์ ์ปดํ์ผ ํ์ ์์๋ณด๋ค ๋ฐํ์ ์์๋ฅผ ์ฌ์ฉํด์ผ ํ ๊น?
- ์ปดํ์ผํ์ ์์๊ฐ ์ฝ๊ฐ ๋ ๋น ๋ฅด์ง๋ง ๋ฐํ์ ์์์ ๋นํด ์ ์ฐ์ฑ์ด ์๋นํ ๋จ์ด์ง๋ค.
- ๋ฐํ์ ์์๋ ๋ฉค๋ฒ ์ด๊ธฐํ ๊ตฌ๋ฌธ๋ฟ ์๋๋ผ ์์ฑ์์์๋ ์ด๊ธฐํ๋ ์ ์๋ค.
- ๋ฐํ์ ์์๋ ๋์ผ ํด๋์ค์ ์ธ์คํด์ค๋ผ๋ ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง ์ ์์ง๋ง ์ปดํ์ผํ์ ์์๋ ๋ชจ๋ ๋์ผํ ๊ฐ์ ๊ฐ๋๋ค.
์ปดํ์ผํ์ ์์๋ ์ฑ๋ฅ์ด ๋งค์ฐ ์ค์ํ๊ณ ์์์ ๊ฐ์ด ์ ๋๋ก ๋ฐ๋์ง ์๋ ๊ฒฝ์ฐ์๋ง ์ ํ์ ์ผ๋ก ์ฌ์ฉํ์.
์์ดํ 3. ์บ์คํธ๋ณด๋ค๋ is, as๊ฐ ์ข๋ค.
C#์ ์ ์ ํ์ดํ์ ์ํํ๋ ์ธ์ด์ด๋ฏ๋ก ์ปดํ์ผ๋ฌ ์ ํ์ ๊ฒ์ฌ๋ฅผ ์ํํ๋ค. ๊ฐํน ๋ฐํ์์ ํ์ ๊ฒ์ฌ๋ฅผ ์ํํ๊ธฐ๋ ํ๋๋ฐ Object ํ์ ์ ์ธ์๋ก ๊ฐ๋ ๋ฉ์๋๋ฅผ ์ ์ํ ๋ ํ๋ณํ์ ์ํํ๋ ๊ฒฝ์ฐ์ด๋ค. ์ด๋, ํ๋ณํ์ ์ํํ๋ ๋ฐฉ๋ฒ์๋ ์บ์คํธ ์ฐ์ฐ์์ as ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ is ์ฐ์ฐ์๋ก ํ๋ณํ์ด ๊ฐ๋ฅํ์ง ๊ฒ์ฌํ ํ ์ค์ ํ๋ณํ์ ํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
object o = Factory.GetObject();
// ์บ์คํธ ์ฐ์ฐ์ ์ฌ์ฉ
try
{
MyType t;
t = (MyType)o;
}
catch (..) {}
// as ์ฐ์ฐ์ ์ฌ์ฉ
MyType t = o as MyType;
if (t != null) {}
์บ์คํธ ์ฐ์ฐ์๋ ๊ฐ์ฒด๋ฅผ ์ง์ ํ ํ์ ์ผ๋ก ๋ณํํ๊ธฐ ์ํด ํ๋ณํ ์ฐ์ฐ์๊ฐ ๊ฐ์ ๋ ์ ์๋ค.
- ์ซ์ ํ์ ํ๋ณํ
- ์ฌ์ฉ์ ์ ์ ํ๋ณํ: ๊ฐ์ฒด์ ๋ฐํ์ ํ์ ์ด ์๋ ์ปดํ์ผ ํ์ ํ์ ์ ๋ง์ถฐ ์ํ๋๋ค.
as ์ฐ์ฐ์์ is ์ฐ์ฐ์๋ ๋ฐํ์์ ๊ฐ์ฒด์ ํ์ ์ ํ์ธํ๊ณ ํ์์ ๋ฐ๋ผ ๋ฐ์ฑ๋ง ์ํํ๋ค.
- nullable ํ์ , ์ง์ ํ ํ์ , ์ง์ ํ ํ์ ์ ์์ํ ํ์ ์ผ ๊ฒฝ์ฐ์๋ง ํ๋ณํ์ ์ํํ๋ค.
- ์ฌ์ฉ์ ์ ์ ํ๋ณํ์ ์ํ๋์ง ์์ผ๋ฏ๋ก ๋ณํํ๋ ค๋ ํ์ ๊ณผ ์ ํํ ์ผ์นํ๋ ๊ฒฝ์ฐ์๋ง ํ๋ณํ์ด ์ฑ๊ณตํ๋ค.
์ ์บ์ค๋ ์ฐ์ฐ์๋ณด๋ค as ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ผ ํ ๊น?
- ๋ ์์ ํ๊ณ ๋ฐํ์์ ํจ์จ์ ์ผ๋ก ๋์ํ๋ค.
- as๋ ํ๋ณํ์ ์ํํ ์ ์๊ฑฐ๋ null์ ๋์์ผ๋ก ํ๋ณํ์ ํ๋ ๊ฒฝ์ฐ, null์ ๋ฐํํ๊ธฐ ๋๋ฌธ์ null ๊ฒ์ฌ๋ง ์ํํ๋ฉด ๋๋ค. ํ์ง๋ง ์บ์คํธ๋ ์์ธ์ฒ๋ฆฌ์ null ๊ฒ์ฌ๋ฅผ ๋ค ์ํํด์ผ ํ๋ค.
์์ดํ 4. string.Format()์ ๋ณด๊ฐ ๋ฌธ์์ด๋ก ๋์ฒดํ๋ผ.
string.Format()์ ํฌ๋งท ๋ฌธ์์ด๊ณผ ์ธ์ ๋ฆฌ์คํธ๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ ๋ฌํ๋ค.
- ์ฝ๋ ๊ฐ๋ ์ฑ์ด ํฅ์๋๊ณ ํํ์์ด ๋ค์ํ๋ค.
- ์ปดํ์ผ๋ฌ ์ ์ ์ ํ์ ๊ฒ์ฌ๋ฅผ ์ํํ ์ ์๋ค.
๋ฌธ์์ด ๋ณด๊ฐ์ ๋ฌธ์์ด ์์ $๋ฅผ ๋ถ์ด๊ณ ๋ฌธ์์ด๋ก ๋ณ๊ฒฝํ ์ธ์๋ {} ๋ด์ ๋๋ค.
// string.Format()
Console.WriteLine("Example1 : {0}, {1}", "BlockDMask", 1212);
// ๋ฌธ์์ด ๋ณด๊ฐ
Console.WriteLine($"string example1 : {a} + {b} = {a+b}");
๊ทธ๋ฌ๋ ์ธ์๋ก ์ ๋ฌํ ๋ณ์์ ๋ฐ์ฑ ๊ณผ์ ์ํํ๊ธฐ ๋๋ฌธ์ ๋๋ฌด ๋ง์ด ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ์ ์ข์ง ์๋ค. ๊ทธ๋์ ์ฌ์ ์ ๋ฌธ์์ด๋ก ๋ณ๊ฒฝ(ToString())ํด ๊ฐ์ ์ ๋ฌํด ๋ฐ์ฑ ๋๋ ๊ฒ์ ํผํ ์ ์๋ค.
๋์ค์ ๊ฐ์ฒด๋ ๋ฐ์ดํฐ๋ก ์ฌํด์์ด ํ์ํ ๋ฌธ์์ด์ ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด ๋ฌธ์์ด ๋ณด๊ฐ์ ์ฌ์ฉํ์.
์์ดํ 5. ๋ฌธํ๊ถ๋ณ๋ก ๋ค๋ฅธ ๋ฌธ์์ด์ ์์ฑํ๋ ค๋ฉด FormattableString์ ์ฌ์ฉํ๋ผ.
์ฌ๋ฌ ๋ฌธํ๊ถ๊ณผ ๋ค์ํ ์ธ์ด๋ฅผ ๋ค๋ค์ผ ํ๋ ๊ฒฝ์ฐ ์ธ๋ถ์ ์ธ ์ ์ด๊ฐ ํ์ํ๋ฏ๋ก ๋ฌธ์์ด์ ์์ฑํ๋ ๊ณผ์ ์ ์ข ๋ ์์ธํ ์๊ณ ์์ด์ผ ํ๋ค. ๋ฌธ์์ด ๋ณด๊ฐ ๊ธฐ๋ฅ($)์ ์ฌ์ฉํ๋ฉด ๋ฐํ ๊ฐ์ ๋ฌธ์์ด์ผ ์๋ ์์ง๋ง FormattableString์ ์์ํ ํ์ ์ผ ์๋ ์๋ค.
// String
string first = $"It's the {DateTime.Now.Day} of the {DateTime.Now.Month} month";
// FormattableString
FormattableString second = $"It's the {DateTime.Now.Day} of the {DateTime.Now.Month} month";
// String or FormattableString
var third = $"It's the {DateTime.Now.Day} of the {DateTime.Now.Month} month";
FormattableString ํ์ ์ ํ์ฌ ์ปดํจํฐ์ ์ง์ ๋ ๋ฌธํ๊ถ์ ๊ณ ๋ คํ์ฌ ๋ฌธ์์ด์ ์์ฑํ๋ค. ์ ๋ ฅ๋ฐ์ FormattableString ํ์ ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ธ์ด์ ๋ฌธํ๊ถ์ ๋ฐ๋ผ ์ต์ข ๋ฌธ์์ด๋ก ๋ณ๊ฒฝํ ํ ๋ฐํํ๋ค.
public static string ToGerman(FormattableString src)
{
return string.Format(null, System.Globalization.CultureInfo.CreateSpecificCulture("de-de"), src.Format, src.GetArguments());
}
public static string ToFrenchCanada(FormattableString src)
{
return string.Format(null, System.Globalization.CultureInfo.CreateSpecificCulture("fr-CA"), src.Format, src.GetArguments());
}
๋ฌธํ๊ถ์ ์์๋ก ์ง์ ํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ๋ช ์์ ์ผ๋ก FormattableString ํ์ ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ด ๊ฐ์ฒด๋ฅผ ํตํด ๋ฌธ์์ด์ ์ป์ด ์ค๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์.
์์ดํ 6. nameof() ์ฐ์ฐ์๋ฅผ ์ ๊ทน ํ์ฉํ๋ผ.
๋ถ์ฐ ์์คํ ์ด ์ ์ฐจ ๋์คํ๋จ์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ์์คํ ์ฌ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์์ผ ํ๋ ์ผ์ด ๋ง์์ก๋ค. ์ด๋ฌํ ์ฐจ์ด๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด์ ์ด๋ฆ์ด๋ ๋ฌธ์์ด ์๋ณ์์ ์์กดํ๋ ๊ฐ๋จํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ๋ง์ด ์ฌ์ฉ๋๋ค. ํ์ง๋ง ์ด ๊ฐ์ ๋ฐฉ์์ ์ถ๊ฐ ๋น์ฉ์ ๋ฐ์์ํจ๋ค. ๋ํ์ ์ธ ๋จ์ ์ผ๋ก ํ์ ์ ๋ณด๋ฅผ ์์คํ๋ค๋ ๊ฒ์ด๋ค.
nameof() ์ฐ์ฐ์๋ ์ฌ๋ณผ ๊ทธ ์์ฒด๋ฅผ ํด๋น ์ฌ๋ณผ์ ํฌํจํ๋ ๋ฌธ์์ด๋ก ๋์ฒดํ์ฌ ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
- ํ์ , ๋ณ์, ์ธํฐํ์ด์ค, ๋ค์์คํ์ด์ค์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ด๋ฆ์ ๋ฐํํ๋ค.
- ์ ๊ทํ๋ ์ด๋ฆ์ด๋ผ๋ ํญ์ ๋ก์ปฌ ์ด๋ฆ์ ๋ฌธ์์ด๋ก ๋ฐํํ๋ค.
์์ธ ํ์ ์ ๋งค๊ฐ๋ณ์, ํน์ฑ(attribute)์ ๋งค๊ฐ๋ณ์, ๊ฒฝ๋ก ์ง์ ๋ฑ ์ฌ๋ฌ ๊ณณ์์ nameof() ์ฐ์ฐ์๋ฅผ ํ์ฉํ์.
์์ดํ 7. ๋ธ๋ฆฌ๊ฒ์ดํธ๋ฅผ ์ด์ฉํ์ฌ ์ฝ๋ฐฑ์ ํํํ๋ผ.
์ฝ๋ฐฑ์ด๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ๋น๋๊ธฐ์ ์ผ๋ก ํผ๋๋ฐฑ์ ์ฃผ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ผ๋ก C#์์๋ ๋ธ๋ฆฌ๊ฒ์ดํธ๋ฅผ ์ด์ฉํด ๊ตฌํํ๋๋ฐ ๋ฉํฐ์ค๋ ๋ฉ ๊ธฐ์ ์ด๋ ๋๊ธฐ์ ์ผ๋ก ์ํ๋ฅผ ๊ฐฑ์ ํ๋ ๊ธฐ๋ฒ์ผ๋ก ํ์ฉ๋๋ค.
- ๋ฐํ์์ ํต์ง ๋์์ ์ ํ ์ ์๋ค.
- ํ๋์ ๋ธ๋ฆฌ๊ฒ์ดํธ๋ ์ฌ๋ฌ ๋ฉ์๋์ ๋ํ ์ฐธ์กฐ๋ฅผ ํฌํจํ ์ ์์ด ๋ฉํฐ์บ์คํธ(๋ค์์ ํด๋ผ์ด์ธํธ)๊ฐ ๊ฐ๋ฅํ๋ค.
- ๊ฐ ๋ฉ์๋๋ ์ ์ ๋ฉ์๋์ผ ์๋ ์๊ณ ์ธ์คํด์ค ๋ฉ์๋์ผ ์๋ ์๋ค.
- ๋์ ํจ์๋ค์ ์ฐ์์ ์ผ๋ก ํธ์ถํ๋ ํํ๋ก ๊ตฌํ๋๋๋ฐ, ์ด๋ค ์์ธ๋ ์ก์ง ์์ ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ํธ์ถ ๊ณผ์ ์ด ์ค๋จ๋๋ค.
- ๋ง์ง๋ง์ผ๋ก ํธ์ถ๋ ๋์ ํจ์์ ๋ฐํ ๊ฐ์ด ๋ธ๋ฆฌ๊ฒ์ดํธ์ ๋ฐํ ๊ฐ์ผ๋ก ๊ฐ์ฃผ๋๋ค.
- ๋์ผํ ํ์ ์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ๋๋ผ๋ ๋ฐํ ํ์ ์ด ๋ค๋ฅด๋ฉด ์๋ก ๋ค๋ฅธ ๋ธ๋ฆฌ๊ฒ์ดํธ๋ก ๊ฐ์ฃผ๋๋ฏ๋ก ๋ ์ฌ์ด์ ํ๋ณํ์ ํ์ฉํ์ง ์๋๋ค.
- ์ฌ๋ฌ ํด๋์ค๊ฐ ์ํธ ํต์ ์ ์ํํด์ผ ํ ๋ ํด๋์ค ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ ์ถ๋ค๋ฉด ์ธํฐํ์ด์ค๋ณด๋ค ๋ธ๋ฆฌ๊ฒ์ดํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
- ์์ฃผ ์ฌ์ฉ๋๋ ๋ธ๋ฆฌ๊ฒ์ดํธ๋ .NET Framework ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์๋์ด ์๋ค.
- Predicate <T>: ์กฐ๊ฑด์ ๊ฒ์ฌํ์ฌ bool ๊ฐ์ ๋ฐํํ๋ ๋ธ๋ฆฌ๊ฒ์ดํธ
- Func <>: ์ฌ๋ฌ ๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์ ๋จ์ผ์ ๊ฒฐ๊ด๊ฐ์ ๋ฐํํ๋ ๋ธ๋ฆฌ๊ฒ์ดํธ
- Action <>: ์ฌ๋ฌ ๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์ง๋ง ๋ฐํ ํ์ ์ด void์ธ ๋ธ๋ฆฌ๊ฒ์ดํธ
์์ดํ 8. ์ด๋ฒคํธ ํธ์ถ ์์๋ null ์กฐ๊ฑด ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ผ.
์ด๋ฒคํธ๋ฅผ ์ ์ํ๊ณ ์ด๋ฒคํธ๋ฅผ ํธ์ถํ๊ธฐ๋ง ํ๋ฉด ์ด๋ฒคํธ์ ๊ฒฐํฉ๋์ด ์๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ํธ์ถ๋๋ค.
ํ์ง๋ง ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ์๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
null ์กฐ๊ฑด ์ฐ์ฐ์(?.)๋ ์์ ํ๊ฒ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ํธ์ถํ๋ค. ์ฐ์ฐ์์ ์ผ์ชฝ์ ํ๊ฐํ์ฌ ์ด ๊ฐ์ด null์ด ์๋ ๊ฒฝ์ฐ์๋ง ์ฐ์ฐ์ ์ค๋ฅธ์ชฝ์ ํํ์์ ์คํํ๋ค.
public class EventSource
{
private EventHandler<int> Updated;
public void RaiseUpdates()
{
counter++;
Updated?.Invoke(this, counter);
}
}
์์ดํ 9. ๋ฐ์ฑ๊ณผ ์ธ๋ฐ์ฑ์ ์ต์ํํ๋ผ.
๊ฐ์ ์ ์ฅํ ๋ ์ฐ๋ ๊ฐ ํ์ ์ ๋คํ์ ์ด์ง ๋ชปํ๋ค. ๋ฐ๋ฉด์, .NET Framework๋ ๋ชจ๋ ํ์ ์ ์ต์์ ํ์ ์ ์ฐธ์กฐ ํ์ ์ธ System.Object๋ก ์ ์ํ๊ณ ์๋ค. ๋ ๊ฐ์ง ํ์ ์ ์๋ก ๋ค๋ฅด์ง๋ง ๋ฐ์ฑ๊ณผ ์ธ๋ฐ์ฑ์ด๋ผ๋ ๋ฐฉ๋ฒ์ ํตํด ์๋ก ์ด์ด์ง๊ฒ ๋๋ค. ์ด ๋ฐฉ๋ฒ์ System.Object ํ์ ์ด๋ ์ธํฐํ์ด์ค ํ์ ์ด ํ์ํ ๊ณณ์์ ๊ฐ ํ์ ์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ฐ๋์ ํ์ํ ๋ฉ์ปค๋์ฆ์ด๋ค.
๋ฐ์ฑ
- ๊ฐ ํ์ ์ ๊ฐ์ฒด๋ฅผ ํ์ ์ด ์ ํด์ ธ ์์ง ์์ ์์์ ์ฐธ์กฐ ํ์ ๋ด๋ถ์ ํฌํจ์ํค๋ ๋ฐฉ๋ฒ์ด๋ค.
- ์๋กญ๊ฒ ์์ฑ๋ ์ฐธ์กฐ ํ์ ์ ๊ฐ์ฒด๋ ํ์ ์์ฑ๋๋ฉฐ ๊ฐ ํ์ ์ ๋ณต์ฌ๋ณธ์ด ๊ทธ ๋ด๋ถ์ ์ ์ฅ๋๋ค.
- ๋ฐ์ฑ์ ํ๋ฉด ์ฐธ์กฐ ํ์ ์ด ํ์ํ ๊ฒฝ์ฐ์๋ ๊ฐ ํ์ ์ ์ธ ์ ์๋ค.
์ธ๋ฐ์ฑ
- ๋ฐ์ฑ ๋์ด ์๋ ์ฐธ์กฐ ํ์ ์ ๊ฐ์ฒด๋ก๋ถํฐ ๊ฐ ํ์ ๊ฐ์ฒด์ ๋ณต์ฌ๋ณธ์ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ฐ์ฑ๊ณผ ์ธ๋ฐ์ฑ ์์ ์ ์์์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ฉฐ ์ค์ ๋ก ์ด๋ค ๋ณํ ์์ ์ด ์ํ๋๋์ง ์ ์ ์๋ค. ์ด๋ฌํ ๊ณผ์ ์์ ์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ๋ ํ๋๋ฐ ์ด๋ก ์ธํด ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ์๋ ์๊ณ ๊ฐ ํ์ ์ ๋คํ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ณผ์ ์์ ์ฑ๋ฅ์ ๋๋ฆฌ๊ฒ ๋ง๋ ๋ค.
์ ๋ค๋ฆญ์ด ์๋ ์ปฌ๋ ์ ์ ์ฌ์ฉํ๊ฑฐ๋ ๊ฐ ํ์ ์ System.Object ํ์ ์ด๋ ์ธํฐํ์ด์ค ํ์ ์ผ๋ก ๋ณ๊ฒฝํ๋ ์ฝ๋๋ ์์ฑํ์ง ๋ง์.
์์ดํ 10. ๋ฒ ์ด์ค ํด๋์ค๊ฐ ์ ๊ทธ๋ ์ด๋๋ ๊ฒฝ์ฐ์๋ง new ํ์ ์๋ฅผ ์ฌ์ฉํ๋ผ.
๋ฒ ์ด์ค ํด๋์ค์์ virtual๋ก ์ ์ธ๋์ง ์์ ๋ฉค๋ฒ๋ฅผ ์ฌ์ ์ํ๋ ค๋ ๊ฒฝ์ฐ์ new ํ์ ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๊ทธ๋ฌ๋ virtual๋ก ์ ์ธ๋์ง ์์ ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๋ฉด ๋ฉ์๋์ ๋์ ๋ฐฉ์์ ๋ชจํธํ๊ฒ ๋ง๋ค ์ ์๋ค.
public class MyClass
{
public void MagicMethod() { ... }
}
public class MyOtherClass : MyClass
{
public new void MagicMethod { ... } // ์ฌ์ ์: ๊ฐ์ฒด๋ฅผ ์ด๋ป๊ฒ ์ฐธ์กฐํ๋๋์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋์
}
new ํ์ ์๋ ๋น๊ฐ์ ๋ฉ์๋๋ฅผ ๊ฐ์ ๋ฉ์๋๋ก ๋ง๋๋ ๊ฒ์ด ์๋ ํด๋์ค์ ๋ช ๋ช ๋ฒ์ ๋ด์ ์๋ก์ด ๋ฉ์๋๋ฅผ ์ถ๊ฐํ๋ค.
- ๋น๊ฐ์ ๋ฉ์๋๋ ์ ์ ์ผ๋ก ๋ฐ์ธ๋ฉ๋๋ฏ๋ก ์ ํํ ํ๋์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
- ๊ฐ์ ๋ฉ์๋๋ ๋์ ์ผ๋ก ๋ฐ์ธ๋ฉ๋๋ฏ๋ก ๋ฐํ์์ ๊ฐ์ฒด์ ํ์ ์ด ๋ฌด์์ด๋์ ๋ฐ๋ผ ๊ทธ์ ๋ถํฉํ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
๋ฒ ์ด์ค ํด๋์ค์์ ์ด๋ฏธ ์ฌ์ฉํ๊ณ ์๋ ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ์ฌ ์์ ํ ์๋ก์ด ๋ฒ ์ด์ค ํด๋์ค๋ฅผ ๋ง๋ค์ด์ผ ํ๋ ๊ฒฝ์ฐ๋ก ์ด๋ฏธ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์๋ ๋ฉ์๋๊ฐ ์์ด ์ด๋ฅผ ์ผ์ผ์ด ์์ ํ๊ธฐ ์ด๋ ค์ธ ๋ ์ฌ์ฉํ๋ค.