0

我尝试创建一个匿名类型并将其设置为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)返回给所需的变量。

我想知道的是,除了我用来在创建时将匿名类型的值设置为的方法之外,还有什么更清洁 且可能 更好null的方法吗?

4

3 回答 3

1

如果您想将 null 分配给匿名类型,这可以正常工作

var min = new { Value = new MyClass(), Total = 0 }
min = null;
于 2013-08-12T08:31:39.070 回答
0

我完全理解您的需求,并且在我确实想要一个本地但强类型(尽管是匿名类型)变量的情况下,我已经遇到过几次这种情况。

但不幸的是,我认为没有任何巧妙的方法可以做到这一点 - 另一种选择是使用 Enumerable.Range(0,0).Select(...).FirstOrDefault(),与您的中继器非常相似。

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

Tuple<int, string, string> myVariable = null;
于 2013-08-12T08:43:19.653 回答
-1

你可以使用:

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

但我无法真正理解这样一行代码的意义。

于 2013-08-12T08:42:40.977 回答