内联函数是一种编译器优化,它用被调用者的主体替换了函数调用站点。此优化支持常规C#函数。
支持C# 5.0中async-await模式的异步函数具有特殊声明,涉及async
修饰符和使用Task<>
包装返回值。
异步函数能否被内联呢?
示例:
假设我有以下函数:
private async Task<int> CalleeAsync() {
return await SomeOperationAsync();
}
private async Task<int> CallerAsync() {
return await CalleeAsync();
}
他们能被优化为:
private async Task<int> CallerAsync() {
return await SomeOperationAsync();
}
额外学分:
如果支持,是编译器?JIT?还是我可以决定哪些内容进行内联?
如果不支持,我应该担心这个问题吗?是否应该避免为了可读性而添加过多的包装器?
私有任务<int> CalleeAsync() { 返回 SomeOperationAsync(); }
- I4V