【发布时间】:2014-06-01 02:39:10
【问题描述】:
我需要一些帮助将 Objective-C 块转换为 C#。
这里是源 ObjC:
NSDate* addYear = [_calendar dateByAddingComponents:((^{
NSDateComponents* components = [NSDateComponents new];
components.month = 12;
return components;
})()) toDate:now options:0];
现在我在 C# 中尝试了以下操作:
NSDate date = _calendar.DateByAddingComponents((() => {
NSDateComponents components = new NSDateComponents();
components.Month = 12;
return components;
})(), now, NSCalendarOptions.None);
我得到以下编译器错误:Expression denotes a 'anonymous method' where a 'method group' was expected。
删除 lambda 周围的括号会产生 Cannot convert 'lambda expression' to non-delegate type 'MonoTouch.Foundation.NSDateComponents'。
什么是正确的 C# 语法?我需要保留闭包,因为我要移植的代码库中还有很多。
【问题讨论】:
-
DateByAddingComponents 方法的签名是什么?
-
@SteveMitcham 在 Mono 中,它采用 NSDateComponents 对象。
-
在定义 lambda 后尝试删除 (),因此最后一行将是 ''}),现在,NSCal....'
标签: c# objective-c mono xamarin.ios