c#之在匿名类型数组中包含空值/默认值的更简洁方法
duanxz
阅读:46
2025-06-02 22:19:02
评论:0
所以这段代码可以编译:
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" } }
};
但对于前两个示例,编译器似乎有足够的信息来计算出“默认”的隐式类型——那么有没有理由不这样做呢?有没有什么方法可以在没有辅助函数或变量的情况下实现我想要的?
请您参考如下方法:
根据您的用例,您可能会这样做:
var foo = new[]
{
new { prop1 = 1, prop2 = "whatever" },
default,
new { prop1 = 2, prop2 = "something" },
}.Select(x => new { value = x } ).ToArray();
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



