我可以创建一个类的静态默认实例,可以用作构造函数中的默认参数



我有一个类,将接口作为其构造函数的参数之一。有没有办法创建一个可以用作参数的默认值的特定实现实例?

    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 Othernew ClassA()用作"默认"值。

最新更新