【发布时间】:2019-10-02 12:27:58
【问题描述】:
我是 C# 和一般编程的新手,当我发现以下问题时,我试图找出如何实现一个可以支持嵌套对象的构建器: Builder pattern with nested objects
公认的解决方案有效,但我意识到我并不完全理解代码中发生了什么。
尤其是定义动作的部分:
public ReceiptBuilder WithItem(string text, Action<ReceiptItemBuilder> itemBuilder)
{
var rib = new ReceiptItemBuilder(text);
itemBuilder(rib);
r.AddItem(rib.Build());
return this;
}
如果有人能解释一下这次通话中发生的事情会很好吗?
itemBuilder(rib);
【问题讨论】:
-
itemBuilder是一个Action委托,它采用ReceiptItemBuilder,这意味着它可以像带有签名void itemBuilder(ReceiptItemBuilder x)的方法一样被调用。委托基本上是在 C# 中传递函数的方式。 -
看看这些教程:Delegates Level1 and Delegates Level2 and Anonymous Methods Level1 and Anonymous Methods Level2
-
@OlivierRogier 别忘了Predicate
-
感谢您的回复。我肯定会研究这些教程。 @juharr 但是当您调用 itemBuilder 并将其传递给 ReceiptItemBuilder 时会发生什么