【问题标题】:Nullable Expressions可空表达式
【发布时间】:2014-02-20 15:22:10
【问题描述】:

我有这个方法

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

我希望能够这样称呼它

public Sorting(null)

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

我该怎么做?

【问题讨论】:

  • null 传递给方法气味...
  • 那么最好的方法是什么?

标签: linq lambda linq-expressions


【解决方案1】:

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

【讨论】:

  • 我也不喜欢将布尔值传递给方法然后使用命名参数:)) Sorting(ascending: false)
  • 在传递布尔文字时使用命名参数使代码 so 更具可读性。当我编写 Java 代码时,我什至已经开始使用 cmets 进行此操作,例如,Sorting(/*ascending:*/false)
猜你喜欢
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 2018-08-16
  • 2021-08-16
相关资源
最近更新 更多