C# 从子类继承超类属性

C# 从子类继承超类属性,c#,inheritance,C#,Inheritance,我对C#还不熟悉,正在尝试 我有一个超级类表单,它有一个属性FormID表单由其他4个子类继承 Form->DeployForm->SystemOut 和 Form\u>collection->SystemIn 如何从子类访问属性FormID?(DeployForm,systemoutcollection,Collectiom和SystemIn?) 您只需像引用任何其他属性一样引用它: DeploymentForm deploymentForm = new DeploymentForm(); v

我对C#还不熟悉,正在尝试

我有一个超级类
表单
,它有一个属性
FormID
<代码>表单由其他4个子类继承

Form->DeployForm->SystemOut
Form\u>collection->SystemIn

如何从子类访问属性
FormID
?(
DeployForm
systemoutcollection
Collectiom
SystemIn
?)


您只需像引用任何其他属性一样引用它:

DeploymentForm deploymentForm = new DeploymentForm();
var x = deploymentForm.FormID;

你不需要任何特别的东西:

public class DeployForm : Form
{
    public void DoStuff()
    {
         System.Console.WriteLine("{0}", FormID);
    }
}

另一方面,您想了解C#中的自动属性-没有必要为每个属性都有一个明确的支持字段。

因为
FormID
属性有一个
public
范围,它可以在子类中访问,就像它是一个普通成员一样。就这样

this.FormID

编辑以回应OP的评论

如果子类中的构造函数是
public
default(无参数)且为空(与您的一样),则它是冗余的。可以而且应该删除空的
public
默认构造函数

如果你想让一个
public
默认构造函数做一些事情,那就去做吧。基类上的默认构造函数(如果存在)将在实例化子类时隐式调用

如果基类没有可访问的默认构造函数,或者希望使用某些参数调用非默认构造函数,则可以在子类构造函数定义中指定该调用。e、 g

public class BaseClass
{
    protected BaseClass(int p)
    {
    }
}

public class SubClass : BaseClass
{
    public SubClass()
        : base(int.MinValue)
    {
    }

    public SubClass(int p)
        : base(p)
    {
    }
}

请记住,如果一个类没有构造函数,则暗示一个
public
默认的空构造函数。如果指定了任何构造函数,则会删除其含义。

在派生类中使用'this.FormID'或'base.FormID'就行了。由于您是新来的,我冒昧地让您的问题更具可读性。这将使一个好的答案更有可能。如果我真的改变了意思,我道歉。请编辑问题,避免歧义。谢谢@Jorell,谢谢你帮助我重新表述问题。嗨@chrisP,我需要对deploymentForm类中的构造函数做些什么吗?我这样做对吗//在deploymentForm类中声明一个属性以保存Form类中的“formID”?私有形式;公共表单FormID{get{}set{}}Hi@jodrell我需要对deploymentForm类中的构造函数做些什么吗?我这样做对吗//在deploymentForm类中声明一个属性以保存Form类中的“formID”?私有形式;公共表单FormID{get{}}set{}@Jorell非常感谢您向我解释,我很抱歉我将第二个问题发布在这里。
public class BaseClass
{
    protected BaseClass(int p)
    {
    }
}

public class SubClass : BaseClass
{
    public SubClass()
        : base(int.MinValue)
    {
    }

    public SubClass(int p)
        : base(p)
    {
    }
}