异步Func作为委托

时间:2019-01-03 14:05:59

标签: async-await delegates

假设我有一个将某些输入转换为某些输出的函数:

<?php if ( is_single() && ! empty( $category_array ) && !in_array(2, $category_array ) ) : ?>

除了MyFunction之外,我还有几个非常相似的功能,它们都具有以下模式:

TypeB MyFunction(TypeA input);

唯一的区别是MyFunction。 X和Z并不是真正的函数,它们是返回匿名类型的LINQ语句,因此我认为我可以使用int Example1(...) { TypeA a = X(); TypeB b = MyFunction(a); int z = Z(x, y); return z; } 作为参数来创建一个函数:

MyFunction

因此,现在只有一个地方可以使用序列A-MyFunction-C。如果将来A更改为其他内容,Example2的所有用户将自动拥有此新A。

用法(为简单起见:typeA和typeB为int)

int Example2(Func<TypeA, TypeB> MyFunction)
{
     TypeA a = X();
     TypeB b = MyFunction(a);
     int z = Z(x, y);
     return z;
}

这很好。但是现在我有一个MyFunction是异步的版本

int B1 (int a) {...}
int B2 (int a) {...}

int i = Example2(B1);
int j = Example2(B2);

是否可以为B1Async创建委托,所以我仍然可以使用Example1,

Task<int> B1Async(int a) {...}

还是我必须创建一个异步版本

0 个答案:

没有答案