Мне нужна помощь в преобразовании блока Objective-C в С#.
Вот источник ObjC:
NSDate* addYear = [_calendar dateByAddingComponents:((^{
NSDateComponents* components = [NSDateComponents new];
components.month = 12;
return components;
})()) toDate:now options:0];
Теперь я попробовал следующее в С#:
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
.
Удаление круглых скобок вокруг лямбда-уроков Cannot convert 'lambda expression' to non-delegate type 'MonoTouch.Foundation.NSDateComponents'
.
Каков правильный синтаксис С#? Мне нужно сохранить закрытие, поскольку в базе кода есть намного больше, чем я переношу.
Это должно работать:
var date = calendar.DateByAddingComponents (
new NSDateComponents ()
{
Month = 12
},
NSDate.Now,
NSCalendarOptions.None);
EDIT: вам может понадобиться Func:
Func<NSDateComponents> func = () => new NSDateComponents () { Month = 12 };
date = calendar.DateByAddingComponents (func (), NSDate.Now, NSCalendarOptions.None);
В рамках метода:
date = calendar.DateByAddingComponents (
(new Func<NSDateComponents>(()=> new NSDateComponents () { Month = 12 }))(),
NSDate.Now,
NSCalendarOptions.None);