(Лямбда-функция может быть или не быть тем, что я ищу, я не уверен)
По сути, я пытаюсь выполнить следующее:
int areaOfRectangle = (int x, int y) => {return x * y;};
но он дает ошибку: "Невозможно преобразовать лямбда-выражение в тип" int ", потому что это не тип делегата"
Более подробная проблема (которая действительно не имеет никакого отношения к вопросу, но я знаю, что кто-то спросит):
У меня есть несколько функций, которые выходят из переопределенного OnLayout и еще нескольких функций, от которых зависит каждый из них. Для удобства чтения и создания прецедента для последующего расширения я хочу, чтобы функции, которые отключались от OnLayout, выглядели одинаково. Для этого мне нужно разделить их и использовать как можно больше:
protected override void OnLayout(LayoutEventArgs levent)
switch (LayoutShape)
{
case (square):
doSquareLayout();
break;
case (round):
doRoundLayout();
break;
etc..
etc..
}
void doSquareLayout()
{
Region layerShape = (int Layer) =>
{
//do some calculation
return new Region(Math.Ceiling(Math.Sqrt(ItemCount)));
}
int gradientAngle = (int itemIndex) =>
{
//do some calculation
return ret;
}
//Common-ish layout code that uses layerShape and gradientAngle goes here
}
void doRoundLayout()
{
Region layerShape = (int Layer) =>
{
//Do some calculation
GraphicsPath shape = new GraphicsPath();
shape.AddEllipse(0, 0, Width, Height);
return new Region(shape);
}
int gradientAngle = (int itemIndex) =>
{
//do some calculation
return ret;
}
//Common-ish layout code that uses layerShape and gradientAngle goes here
}
Все примеры, которые я сейчас нахожу, говорят, что вы должны объявить делегата, но я знаю, что видел однострочное объявление лямбда...