可空表达

时间:2014-02-20 15:22:11

标签: linq lambda linq-expressions

我有这个方法

public Sorting(Expression<Func<T, object>> property, bool ascending = true)

我希望能够像这样称呼它

public Sorting(null)

我的意思是我想指定无表达式并使用ascending的默认值。

我该怎么做?

1 个答案:

答案 0 :(得分:4)

如果你不需要指定表达式,那么为这个构造函数创建重载(我认为它的构造函数,而不是简单的方法),它没有表达式参数(而不是传递null):

public Sorting(Expression<Func<T, object>> property, bool ascending = true)
public Sorting(bool ascending = true)

旁注 - 我也不喜欢将布尔值传递给方法,因为它们不具有表现力,很难理解它们的含义:

Sorting(false) // what is that?

通常我会创建不同的方法(例如OrderByOrderByDescending)或传递一些枚举(例如Order.AscendingOrder.Descending)。使用构造函数,您无法指定自定义名称,因此我使用静态创建方法。这更容易阅读:

Sorting.CreateDescendingSorting()
Sorting(Order.Ascending)