Ответ 1
Что-то вроде этого:
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
), который выполняется, не возвращая ничего. Также см. Общую ссылку С# делегата.
Для простого случая, подобного этому, это довольно просто. Тем не менее, я считаю, что существуют некоторые семантические/технические различия между блоками в Objective-C и делегатами в С#, которые, вероятно, выходят за рамки этого вопроса.