KO CSharp Events - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
ะฃะบัะฐัะฝััะบะฐ ยท ะ ัััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซไธญๆ ยท ๆฅๆฌ่ช ยท ํ๊ตญ์ด
event๋ฅผ ์ฌ์ฉํ๋ฉด +=์ ํตํด ํธ๋ค๋ฌ๋ฅผ ์๋ช
ํ๊ณ -=๋ฅผ ํตํด ์ ๊ฑฐํ ์ ์์ต๋๋ค. ์ด๋ฒคํธ๋ ์ด๋ฅผ ์ ์ธํ ํ์์ ์ํด ๋ฐ์๋ฉ๋๋ค. ์ธ๋ถ ์์ ํธ๋ค๋ฌ๊ฐ ๊ตฌ๋
์๋ฅผ ๋ณด์ ํ๋ฏ๋ก ๊ตฌ๋
์ด ๋ ์ด์ ํ์ํ์ง ์์ผ๋ฉด ๊ตฌ๋
์ ์ข
๋ฃํด์ผ ํฉ๋๋ค.
์ด ์์ ๋ฅผ Example.cs๋ก ๋ฐ๋ก ์ ์ฅํ๊ณ ์ด ํ์ด์ง์ ๋ค๋ฅธ ์์ ์ ๋
๋ฆฝ์ ์ผ๋ก ์คํํ์ธ์.
Example.cs:
// PROJECT-EXAMPLE
var source = new Source();
source.Changed += () => System.Console.WriteLine("Changed");
source.Raise();
class Source { public event System.Action? Changed; public void Raise() => Changed?.Invoke(); }๊ฒฐ๊ณผ:
Changed
sealed class Progress
{
public event Action<int>? Changed;
public void Report(int value) => Changed?.Invoke(value);
}
var progress = new Progress();
Action<int> handler = value => UO.Print($"Progress={value}");
progress.Changed += handler;
progress.Report(1);
progress.Changed -= handler;sealed class Signal
{
public event EventHandler? Ready;
public void Raise() => Ready?.Invoke(this, EventArgs.Empty);
}
var signal = new Signal();
signal.Ready += (_, _) => UO.Print("Ready");
signal.Raise();์ด ์๋ ์์ฒด C# ํด๋์ค์ ์ด๋ฒคํธ๋ฅผ ์ค๋ช ํฉ๋๋ค. ๊ฒ์ ์ด๋ฒคํธ๋ API ํธ์คํธ๊ฐ ๋ณ๋๋ก ์ ๊ณตํฉ๋๋ค. ํด๋น ์ด๋ฆ, ์ธ์ ๋ฐ ์๋ช ์ฃผ๊ธฐ๋ ํน์ ์ด๋ฒคํธ ๋ฌธ์์ ์ผ์นํด์ผ ํฉ๋๋ค.
๊ณต์ ๋ฌธ์: ์ด๋ฒคํธ ๋ฐ ์ฒ๋ฆฌ๊ธฐ - Microsoft Learn.