Таким образом, этот код компилируется:
var foo = new[]
{
new { prop1 = 1, prop2 = "whatever" },
default,
new { prop1 = 2, prop2 = "something" },
};
Но следующее не делает:
var foo = new[]
{
new { value = new { prop1 = 1, prop2 = "whatever" } },
new { value = default },
new { value = new { prop1 = 2, prop2 = "something" } },
};
И до сих пор единственный способ найти его - это через :
T MakeDefaultOf<T>(T dummy) => default(T);
var foo = new[]
{
new { value = new { prop1 = 1, prop2 = "whatever" } },
new { value = MakeDefaultOf(new { prop1 = 0, prop2 = "" }) },
new { value = new { prop1 = 2, prop2 = "something" } }
};
Но может показаться, что для первых двух примеров у компилятора достаточно информации, чтобы определить неявный тип 'default' - так есть ли причина, по которой его нет? Есть ли способы достичь того, что я хочу, без вспомогательной функции или переменной?