我有一个类,将接口作为其构造函数的参数之一。有没有办法创建一个可以用作参数的默认值的特定实现实例?
interface IClassA
{
void AMethod();
}
class ClassA : IClassA
{
void AMethod()
{
// Do stuff
}
}
class Other
{
public Other(IClassA ia = new ClassA())
{
}
}
我为此遇到的编译器错误,我尝试过的其他所有内容都是"'ia'的默认参数值,必须是编译时常数"
这在C 中很容易可用(我在C#中相对不经验(
如何使类实例成为编译时常数?
您可以将null
指定为默认值,然后以实际值合并:
public Other(IClassA ia = null)
{
ia = ia ?? new ClassA();
ia.AMethod();
}
通过null new Other(null)
或根本没有new Other
将new ClassA()
用作"默认"值。