1

在 C# 中拥有 Collection 初始化程序并允许在无需调用构造函数的情况下定义类的属性,在 C# 中使用方法链是否有任何意义?我什么都看不到。也许我在这里遗漏了一些东西?

谢谢

4

3 回答 3

8

林克?

var item = sequence.Where(x => x.Age > 100)
                   .Select(x => new { x.FirstName, x.LastName })
                   .OrderBy(x => x.LastName)
                   .FirstOrDefault();
于 2010-05-21T16:24:00.277 回答
6

一个常见的用途是流畅的接口

编辑:针对评论中的问题,属性/集合初始化器相当有限,因为您只能设置属性或在集合上调用 Add 方法,而方法调用更灵活,因为它们可以采用多个参数。

流畅的接口只是方法链的一种特定用途,用于生成更具可读性的 API,通常用于对象构建器。

此外,顺便说一句,MSDN 文章非常具有误导性,因为对象初始化器不允许您绕过构造函数,只是在示例中,StudentName该类有一个默认构造函数,它什么都不做。

于 2010-05-21T16:14:42.123 回答
4

CutEdge.Conditions是一个很好的例子,说明为什么方法链接很方便?

public void GetData(int? id)
{
    // Check all preconditions:
    Condition.Requires(id)
        .IsNotNull()
        .IsInRange(1, 999)
        .IsNotEqualTo(128);
}
于 2010-05-21T16:50:03.193 回答