什么时候在方法中使用 return 'this' 而不是 'void' 以及为什么?

When to return 'this' instead of 'void' in a method and why?

在修改自身的方法中返回对 'this' 对象的引用有什么好处(或缺点)?什么时候应该返回一个 'this' 来代替 void?

在看一个answer on code review stack exchange的时候,发现答案用了一个'return this'的自操作方法

简化 class 来自原始:

class Item
{
    public Item(string name)
    {
        Name = name;
    }

    public string Name { get; private set; }

    public Item AddComponent(ItemComponent component)
    {
        _components.Add(component);
        return this;
    }

    private List<ItemComponent> _components = new List<ItemComponent>();
}

消费代码简化:

var fireSword = new Item("Lightbringer")
                   .AddComponent(new Valuable { Cost = 1000 })
                   .AddComponent(new PhysicalDamage { Slashing = 10 });

Related question 不同用户的回答似乎相互矛盾。

This question 也与引用在对象创建中使用的流畅接口的答案类似。

当 return 类型是我们正在应用该方法的当前对象时,返回 this 使用 fluent interface design, that is a special case of method chaining

方法链也是functional programming的根源。

它被 Linq 扩展方法广泛使用 IEnumerable<>IQueryable<>

它允许以链式方式在同一对象上调用方法,而无需为每个方法调用重复变量名。

因此,这会生成更短、更清晰且更易于维护的代码,错误源更少。

所以我们在需要时使用它。