重载构造函数多次传递相同的引用

本文关键字:引用 构造函数 重载 | 更新日期: 2023-09-27 18:30:42

假设我有以下内容:

public interface IFoo
{
  void Foo();
}
public interface IBar
{
  void Bar();
}
public class FooAndBar : IFoo, IBar
{
  //valid implementation
}

现在我有一个类,它在构造函数中接受 IFoo 和 IBar,但也有一个无参数的构造函数。

public class Consumer
{
  private IFoo foo;
  private IBar bar;
  public Consumer(IFoo foo, IBar bar)
  {
     this.foo = foo;
     this.bar = bar;
  }
  public Consumer() : this(new FooAndBar(), new FooAndBar()) {}
}

我想维护调用参数化版本的无参数构造函数之间的关系。但我想传入一个引用对象,而不是"新建"两个 FooAndBar 实例。无论如何,在保持构造函数之间关系的同时做到这一点吗?

重载构造函数多次传递相同的引用

您可以创建一个将 FooAndBar 作为参数的临时私有构造函数:

private Consumer(FooAndBar fooAndBar) : this(fooAndBar, fooAndBar) {}
public Consumer() : this(new FooAndBar()) {}