Использование специфичных для среды group / host_vars и отображение в подкаталоги var в Ansible

Это очень странно! Здесь есть сообщение в блоге здесь , в котором описывается, как изменилось поведение Cast() между .NET 3.5 и .NET 3.5 SP1, но оно по-прежнему не объясняет InvalidCastException, которое вы даже получаете, если переписываете ваш код таким образом:

var list = new[] { 1 };
var castedList = from long l in list select l;
Console.WriteLine(castedList.First());

Очевидно, вы можете обойти это, сделав бросок самостоятельно

var castedList = list.Select(i => (long)i);

Это работает, но это не объясняет ошибку в первую очередь , Я попытался сделать список коротким и плавающим, и те бросили то же исключение.

Изменить

В этом сообщении в блоге объясняется, почему он не работает!

Cast() является методом расширения на IEnumerable, а не IEnumerable. Это означает, что к тому моменту, когда каждое значение дойдет до того момента, когда оно будет запущено, оно снова помещено в объект System.Object. По сути, он пытается это сделать:

int i = 1;
object o = i;
long l = (long)o;

Этот код генерирует InvalidCastException, которое вы получаете. Если вы пытаетесь применить int непосредственно к длинному, вы в порядке, но отбрасывание коробочного int back в long не работает.

Конечно, странность!

2
задан aphexlog 19 March 2019 в 16:04
поделиться