我有一个使用接口作为其构造函数参数之一的类。有没有一种方法可以创建特定实现的实例,可以将其用作参数的默认值?
interface IClassA
{
void AMethod();
}
class ClassA : IClassA
{
void AMethod()
{
// Do stuff
}
}
class Other
{
public Other(IClassA ia = new ClassA())
{
}
}
为此,我遇到了编译器错误,而我尝试过的所有其他操作都是“ ia的默认参数值必须是编译时常量”
这在c ++中很容易做到(我在c#中相对缺乏经验)
如何使类的实例成为编译时常量?
答案 0 :(得分:1)
您可以将null
指定为默认值,然后将其与实际值合并:
public Other(IClassA ia = null)
{
ia = ia ?? new ClassA();
ia.AMethod();
}
传递空new Other(null)
或根本不传递任何new Other
都将new ClassA()
用作“默认”值。