Поскольку мне говорят (точнее пишут), что я немного утомил с философией программирования и стоит браться за ум вспомнить и о технологиях, то я решил не откладывать это дело в долгий ящик, и опубликовать несколько заметок о языке C#. Тем более, что после подготовки к Hot Code остались некоторые наработки, которыми будет интересно поделиться.
Итак, у нас есть структура BigDouble с оператором неявного приведения типов к double и список этих структур:
struct BigDouble
{
private readonly double _value;
public BigDouble(double value) { _value = value; }
public static implicit operator double(BigDouble value)
{ return value._value; }
}
var bigDoubles = new List<BigDouble>
{
new BigDouble(42.0),
new BigDouble(18.0),
};
Вопрос #1. Будет ли работать следующий цикл foreach?
foreach (double d in bigDoubles)
{
Console.WriteLine(d);
}
Вопрос #2. Что мы получим в следующих случаях?
var query = from double d in bigDoubles
select d;
foreach (var d in query) { Console.WriteLine(d); }
