Patrick Skelton Ответов: 2

Как мне переписать это как лямбду?


Я думаю, что этот вопрос может быть глупо простым, но я новичок в лямбдах и просто не могу понять синтаксис для следующего (или если это вообще возможно).

Можно ли переписать следующий фрагмент кода с помощью встроенной лямбды в Thickness конструктор?

double visualUnits = 0.0;
if( Device.RuntimePlatform == Device.iOS )
    visualUnits = 20.0;
Padding = new Thickness( 10.0, visualUnits, 10.0, 5.0 );


Примечание: Thickness конструктор ждет double принципа и Device.RuntimePlatform и Device.iOS являются string значения, все из API Xamarin.

Что я уже пробовал:

Я перепробовал все виды, но нет особого смысла публиковать их, потому что они даже не компилируются.

2 Ответов

Рейтинг:
2

Richard MacCutchan

Цитата:
они даже не будут компилироваться.
Тогда это должно дать вам ключ к разгадке. Я не думаю, что можно что-то получить от чрезмерного усложнения конструктора. Видеть лямбда-выражения - поиск в Google[^].


Patrick Skelton

Конструктор был просто примером. Необходимость в этом конкретном выражении (которое просто устанавливает значение на основе платформы времени выполнения) требуется в нескольких местах.

Я предполагаю, что более общая версия проблемы такова: могу ли я написать лямбда-выражение, которое сравнивает две строки и возвращает другое значение в зависимости от результата сравнения?

Рейтинг:
12

Patrick Skelton

Похоже, как уже было сказано, я слишком все усложнял. Он вообще не требует лямбды. Следующий "стандартный" синтаксис C# работает нормально:

Padding = new Thickness( 10.0, ( Device.RuntimePlatform == Device.iOS ) ? 20.0 : 0.0, 10.0, 5.0 );


Я знал, что вопрос, вероятно, глупо прост. (Где смайлик thicko?)