Информация об изменениях

Сообщение Re[19]: вопрос hi_octane про c# от 04.09.2020 13:29

Изменено 04.09.2020 13:31 Danchik

Re[19]: вопрос hi_octane про c#
Здравствуйте, Sharov, Вы писали:

S>Здравствуйте, Sinclair, Вы писали:


S>>Linq — это, по большому счёту, две фичи:

S>>1. Поддержка Expression в языке
S>>2. Поддержка query syntax.
S>>Первое — принципиально, второе — приятная вишенка на торте.

S>Что значит поддержка Expression в языке, это же библиотечный тип просто? Поддержка в языке это как раз query syntax.


Именно что поддержка в языке. Следующая конструкция создаст компилятором дерево выражений

Expression<Func<int, boo>> expr = t => t == 1;


Что аналогично вот этому (спасибо что за меня это компилятор делает)

var param = Expression.Parameter(typeof(int), "t");
vat expr = Expression.Lambda<Func<int, boo>>(Expression.Equal(param, Expression.Constant(1)), param);


А для query syntax Expression не важны, их може и не быть, как в случае с IEnumerable<>
Re[19]: вопрос hi_octane про c#
Здравствуйте, Sharov, Вы писали:

S>Здравствуйте, Sinclair, Вы писали:


S>>Linq — это, по большому счёту, две фичи:

S>>1. Поддержка Expression в языке
S>>2. Поддержка query syntax.
S>>Первое — принципиально, второе — приятная вишенка на торте.

S>Что значит поддержка Expression в языке, это же библиотечный тип просто? Поддержка в языке это как раз query syntax.


Именно что поддержка в языке. Следующая конструкция создаст компилятором дерево выражений

Expression<Func<int, boo>> expr = t => t == 1;


Что аналогично вот этому (спасибо что за меня это компилятор делает)

var param = Expression.Parameter(typeof(int), "t");
vat expr = Expression.Lambda<Func<int, boo>>(Expression.Equal(param, Expression.Constant(1)), param);


А для query syntax Expression не важны, их може и не быть, как в случае с IEnumerable<>, IObservable<>