KO CSharp Generics - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
ะฃะบัะฐัะฝััะบะฐ ยท ะ ัััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซไธญๆ ยท ๆฅๆฌ่ช ยท ํ๊ตญ์ด
์ผ๋ฐ ์ ํ ๋๋ ๋ฉ์๋๋ ์ ํ ๋งค๊ฐ๋ณ์(์: T)๋ฅผ ๋ฐ์ต๋๋ค. ์ปดํ์ผ๋ฌ๋ ์ด๋ฌํ ์ ํ์ ๋ํ ํธ์ถ์ ํ์ธํฉ๋๋ค. ์ ์ฝ ์กฐ๊ฑด where์ ๊ธฐ๋ณธ ์ ํ, ์ธํฐํ์ด์ค, class, struct, notnull, unmanaged ๋๋ ์ก์ธ์ค ๊ฐ๋ฅํ ์์ฑ์ new() ๋ฑ ํ์ ์์ฑ์ ์ค๋ช
ํฉ๋๋ค.
์ด ์์ ๋ฅผ Example.cs๋ก ๋ฐ๋ก ์ ์ฅํ๊ณ ์ด ํ์ด์ง์ ๋ค๋ฅธ ์์ ์ ๋
๋ฆฝ์ ์ผ๋ก ์คํํ์ธ์.
Example.cs:
// PROJECT-EXAMPLE
T Echo<T>(T value) => value;
System.Console.WriteLine(Echo(7));
System.Console.WriteLine(Echo("ore"));๊ฒฐ๊ณผ:
7
ore
T FirstOrFallback<T>(IReadOnlyList<T> values, T fallback)
{
return values.Count > 0 ? values[0] : fallback;
}
int first = FirstOrFallback(new[] { 10, 20 }, 0);
UO.Print(first.ToString());sealed class Store<T> where T : notnull
{
private readonly HashSet<T> values = new();
public bool Add(T value) => values.Add(value);
public int Count => values.Count;
}
var store = new Store<string>();
store.Add("self");
UO.Print(store.Count.ToString());์ผ๋ฐ ์ธํฐํ์ด์ค ๋ฐ ๋๋ฆฌ์์ ๊ฒฝ์ฐ in ๋ฐ out๋ ๋ฐ๊ณต๋ถ์ฐ๊ณผ ๊ณต๋ถ์ฐ์ ๋ํ๋
๋๋ค. ์ด๋ in/out ๋ฉ์๋์ ๋งค๊ฐ๋ณ์์๋ ๋ค๋ฅธ ๋จ์ด ์ฌ์ฉ์
๋๋ค. ํธํ ๊ฐ๋ฅํ ์ฐธ์กฐ ์ ํ์ ์ ํจํ ๋ณํ์ ์ง์ ํฉ๋๋ค.
๊ณต์ ๋ฌธ์: ์ ํ ์ผ๋ฐ ๋ฐ ์ ์ฝ ์กฐ๊ฑด - Microsoft Learn.