我如何在C#中编写等效代码:
typedef void (^MethodBlock)(int);
- (void) fooWithBlock:(MethodBlock)block
{
int a = 5;
block(a);
}
- (void) regularFoo
{
[self fooWithBlock:^(int val)
{
NSLog(@"%d", val);
}];
}
答案 0 :(得分:16)
这样的事情:
void Foo(Action<int> m)
{
int a = 5;
m(a);
}
void RegularFoo()
{
Foo(val => // Or: Foo(delegate(int val)
{
Console.WriteLine(val);
});
}
Action<T>
是一个委托,它只接受您指定的类型的一个参数(在本例中为int
),它在不返回任何内容的情况下执行。另请参见一般C# delegate reference。
对于像这样的简单案例,它非常简单。但是,我认为Objective-C中的块与C#中的委托之间存在一些语义/技术差异,这可能超出了这个问题的范围。
答案 1 :(得分:1)
void fooWithBlock(Action<int> block)
{
int a = 5;
block(a);
}