@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; }; 
    ....
    }
....
}
  • Вопрос задан
  • 126 просмотров
Решения вопроса 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
vabka
@vabka Куратор тега C#
Токсичный шарпист
можно написать так:
if(ui is UI {leader: { IsValid: true, Owner: var leaderOwner},  b_leader_is_dead: false, } )
{
 // делаем что-то с владельцем лидера
}

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

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

Войти через центр авторизации
Похожие вопросы