Open2
C# 文字列や数値をawait
await
できる
C#は文字列や数値もawait 1000;
var result = await "command";
…!????
カラクリ
await
できるオブジェクトは、GetAwaiter()
という名前のメソッドを持っていてその戻り値がAwaiterちと呼ばれるものならできる。
つまり、拡張メソッドでstring
やらint
(INumber<T>
)やらにGetAwaiter()
メソッドをつければawaitできちゃう。
code
intをawait可能に (awaitした数値ミリ秒分ディレイする)
public static class Extension
{
public static TaskAwaiter GetAwaiter(this int intValue)
{
return Task.Delay(intValue).GetAwaiter();
}
}
何がawaitできる?
//bool
await true; //ok!
//enum
await MyEnum.Apple; //ok!
//index
await ^0;
//Range
await ..;