在创建时将匿名类型设置为null

时间:2013-08-12 08:11:03

标签: c# .net initialization anonymous-types

我尝试创建匿名类型并在创建时将其设置为null。但是,在我看来,这种明显的方法不起作用

new {MyClass Value, int Total} min = null; //will not work

我偶然发现了哪些工作使用Enumerable.Repeat来实现预期目标。

var min = Enumerable.Repeat(new {Value = new MyClass(), Total = 0}, 0)
                    .FirstOrDefault()

我认为它的工作原理是创建一个0大小的匿名类型集合,然后将第一个项目(为空)返回到所需的变量。

我想知道的是,除了我用来设置的方式之外,还有更清洁 以及可能 更好的方式创建时匿名类型的值为null

3 个答案:

答案 0 :(得分:1)

如果要将null指定给匿名类型

,这样可以正常工作
var min = new { Value = new MyClass(), Total = 0 }
min = null;

答案 1 :(得分:0)

我完全理解你的需求,我已经遇到过几次,我想要有一个本地但强类型(匿名类型)变量。

但不幸的是我认为没有任何简洁的方法可以做到这一点 - 另一个选择是使用Enumerable.Range(0,0).Select(...)。FirstOrDefault(),非常类似于你的Repeater

现在每当我面对这种情况时,我都会尝试使用Tuple:

Tuple<int, string, string> myVariable = null;

答案 2 :(得分:-1)

您可以使用:

var min = new { Value = (object)null };

但是我没有真正理解这样一行代码的重点。