C#中等效的Objective-C代码块 [英] Objective-C code blocks equivalent in C#

查看:0
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆