Skip to content

CSharp Basics

Delegate

event 是特殊的 delegate,用于事件驱动编程

使用匿名函数订阅事件

publisher.RaiseCustomEvent += (object o, CustomEventArgs e) => {
    string s = o.ToString() + " " + e.ToString();
    Console.WriteLine(s);
};

IEnumerator

对非泛型集合的简单迭代,支持以 foreach 循环访问集合

public class People: IEnumerable {
    IEnumerator IEnumerable.GetEnumerator()
    {
        return (IEnumerator) GetEnumerator();
    }
}

异步

public async Task<int> GetUrlContentLengthAsync() {
    var client = new HttpClient();
    Task<string> getStringTask =
        client.GetStringAsync("https://example.com");
    string contents = await getStringTask;
    return contents.Length;
}

await 语句将控制权出让给调用方