これが繰り返されないことを願っていますが、ここには「すべてのコードパスが値を返すわけではない」という5000以上の質問があります!
非常に簡単に言えば、非ジェネリック実装を使用したこのメソッドが正常にコンパイルされるのはなぜですか。
public static async Task TimeoutAfter(this Task task, int millisecondsTimeout)
{
if (task == await Task.WhenAny(task, Task.Delay(millisecondsTimeout)))
await task;
else
throw new TimeoutException();
}
メソッドをジェネリックにしようとすると、Return state missing
/ ...not all code paths return a value
警告/エラーが発生しますか?:
public static async Task<T> TimeoutAfter<T>(this Task<T> task, int millisecondsTimeout)
{
if (task == await Task.WhenAny(task, Task.Delay(millisecondsTimeout)))
await task;
else
throw new TimeoutException();
}