Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C在抽象类中可能有构造函数吗?_C# - Fatal编程技术网

C# C在抽象类中可能有构造函数吗?

C# C在抽象类中可能有构造函数吗?,c#,C#,我有一个抽象类,它调用一个静态方法,到目前为止,它不需要任何参数。这种情况最近发生了变化。实际上,静态方法存在于另一个类中并设置BaseMessageDirectory的值,但在下面的示例中,我简化了一些事情 因此,现在我想创建派生类,使它们能够在继承过程中初始化父类中的一些必需属性,这可能吗 例如 public abstract class ParentClass { protected string BaseMessageDirectory;

我有一个抽象类,它调用一个静态方法,到目前为止,它不需要任何参数。这种情况最近发生了变化。实际上,静态方法存在于另一个类中并设置BaseMessageDirectory的值,但在下面的示例中,我简化了一些事情

因此,现在我想创建派生类,使它们能够在继承过程中初始化父类中的一些必需属性,这可能吗

例如

 public abstract class ParentClass
    {
          protected string BaseMessageDirectory;

          protected ParentClass(EnumOperationType operationType)
             {
                if(operationtype == 1)
                  {
                     BaseMessageDirectory = "one";
                  }
                else
                  {
                     BaseMessageDirectory = "two";
                  }
             }
    }

是的,您可以定义构造函数,所有子类都必须调用它:

public class Child : ParentClass
{
    public Child() : base(EnumOperationType.One) { ... }
}

是的,您可以定义构造函数,所有子类都必须调用它:

public class Child : ParentClass
{
    public Child() : base(EnumOperationType.One) { ... }
}

所以如果我理解正确的话-抽象类中的构造函数对于子类来说是必需的?是的。。子类必须调用一个基类构造函数。是的,类必须从其构造函数调用其父类的一个构造函数-如果抽象类具有默认构造函数,则不需要明确指定它,尽管可以。我想至少指定其中一个。如果基类中也有一个无参数构造函数,那么它将是被调用的默认值。虽然你可以像lee说的那样这样做,但我认为这不是一个好主意,因为你的抽象类正在做一些影响其子行为的事情。问题是为什么父类应该为其子类选择基目录?如果代码中添加了具有新操作类型的新子类,会发生什么情况?您也应该更改父类。我认为每个子类都可以在其构造函数中设置自己的基目录,或者可以有一个BaseDirectoryProvider策略模式,可以为父类中的每个类提供此信息。因此,如果我理解正确,抽象类中的构造函数对于子类来说是必需的上课?是的。。子类必须调用一个基类构造函数。是的,类必须从其构造函数调用其父类的一个构造函数-如果抽象类具有默认构造函数,则不需要明确指定它,尽管可以。我想至少指定其中一个。如果基类中也有一个无参数构造函数,那么它将是被调用的默认值。虽然你可以像lee说的那样这样做,但我认为这不是一个好主意,因为你的抽象类正在做一些影响其子行为的事情。问题是为什么父类应该为其子类选择基目录?如果代码中添加了具有新操作类型的新子类,会发生什么情况?您也应该更改父类。我认为每个子类都可以在其构造函数中设置自己的基目录,或者可以有一个BaseDirectoryProvider策略模式,为父类中的每个类提供此信息