C#中等效的Objective-C代码块 [英] Objective-C code blocks equivalent in C#
本文介绍了C#中等效的Objective-C代码块的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何用C#编写等效代码:
typedef void (^MethodBlock)(int);
- (void) fooWithBlock:(MethodBlock)block
{
int a = 5;
block(a);
}
- (void) regularFoo
{
[self fooWithBlock:^(int val)
{
NSLog(@"%d", val);
}];
}
推荐答案
类似于:
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#中的委托之间存在一些语义/技术差异,这可能超出了这个问题的范围。
这篇关于C#中等效的Objective-C代码块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文