Objective-C代码块等效于c#

本文关键字:代码 Objective-C | 更新日期: 2023-09-27 17:54:10

如何在c#中编写等效的代码:

typedef void (^MethodBlock)(int); 
- (void) fooWithBlock:(MethodBlock)block
{
    int a = 5;
    block(a);
}
- (void) regularFoo
{
    [self fooWithBlock:^(int val) 
    {
        NSLog(@"%d", val);
    }];
}

Objective-C代码块等效于c#

像这样:

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#委托参考。

对于这样一个简单的例子,它是相当直接的。然而,我相信在Objective-C中的块和c#中的委托之间存在一些语义/技术差异,这可能超出了这个问题的范围。

void fooWithBlock(Action<int> block)
{
   int a = 5;
   block(a);
}