Задать вопрос
@wlastas

Можно ли записать в одну строку?

public class Tasker :aTasker {
....
   protected override void MakeTask() {
         var leader =( (ui as UI).leader == null || (ui as UI).b_leader_dead || !(ui as UI).leader.isValid || ....  )? null : (ui as UI).leader.Owner; //так работает
//можно сделать в 3 строки, но это приводит к ошибкам в подобном аналогичном использовании - см. коммент ниже
var lui =ui as UI; 
var l = lui.leader;
 var leader = (l == null || lui.b_leader_dead || !l.isValid)? null : l.Owner;  
// можно ли сделать как то так:
     var leader => { var lui =ui as UI; var l = lui.leader; return (l == null || lui.b_leader_dead|| !l.isValid) ? null : l.Owner; }; 
    ....
    }
....
}
  • Вопрос задан
  • 130 просмотров
Подписаться 1 Простой 10 комментариев
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
Решения вопроса 1
insighter
@insighter
-First time? - Huh? (C#, React, JS)
var leader = new Func<Entity>(() => { var lui =ui as UI; var l = lui.leader; return (l == null || lui.b_leader_dead|| !l.isValid) ? null : l.Owner;  })();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
можно написать так:
if(ui is UI {leader: { IsValid: true, Owner: var leaderOwner},  b_leader_is_dead: false, } )
{
 // делаем что-то с владельцем лидера
}

Но я хз доступен ли паттерн матчинг в Unity
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы