C# 如何在C中从子构造函数调用父构造函数#

C# 如何在C中从子构造函数调用父构造函数#,c#,class,inheritance,parent,C#,Class,Inheritance,Parent,我试图从常驻类调用Person类构造函数 人: public class Person { private String name; private String surname; private String address1; private String address2; private String telephone; private String faxNumber; Person(String aName, String

我试图从常驻类调用Person类构造函数

人:

public class Person
{
    private String name;
    private String surname;
    private String address1;
    private String address2;
    private String telephone;
    private String faxNumber;

    Person(String aName, String aSurname, String aAddress1, String aAddress2, String aTelephone, String aFaxNumber)
    {
        name = aName;
        surname = aSurname;
        address1 = aAddress1;
        address2 = aAddress2;
        telephone = aTelephone;
        faxNumber = aFaxNumber;
    }
居民:

public class Resident : Person
{
    private String IDNumberPrim;
    private String IDNumberSec1;
    private String IDNumberSec2;
    private String IDNumberSec3;
    private String IDNumberSec4;
    private String tempID;
    private String passportNumber;


    Resident(String aIDNumberPrim, String aIDNumberSec1, String aIDNumberSec2, String aIDNumberSec3, String aIDNumberSec4, String aTempId, String aPassportNumber)
我试过基本命令,但从来都不起作用

请帮忙

------------更新----------------

问题解决了

谢谢你的帮助和建议

我试过基本命令,但从来都不起作用

这不是一个真正的“命令”,但它确实有效:

Resident(String aIDNumberPrim, String aIDNumberSec1,String aIDNumberSec2,
         String aIDNumberSec3, String aIDNumberSec4, String aTempId,
         String aPassportNumber)
    : base(...)
{
}
诚然,现在还不清楚你会在这里传递什么,因为你的参数中没有一个显示名字或地址等。。。也许您需要添加更多的参数

编辑:正如Adam所指出的,您需要增加
Person
构造函数的可见性,除非
Resident
Person
中声明为嵌套类型。如果只需要在
Resident
的程序文本中调用
Resident
构造函数,那么
Resident
构造函数可以保持私有状态,但更可能的是,您也希望增加其可见性


(作为旁注,这些参数名称很可怕-为什么在所有参数前面都加上
a
?)

当前,由于您没有包含一个参数,您的构造函数都默认为
private
。如果
Person
构造函数是私有的,而
Resident
类是独立的(即,如Jon Skeet所解释的,没有嵌套在
Person
中),即使它是从它继承的,它也不会看到构造函数

只需向它们添加一个修饰符,例如
public
protected
internal

protected Person(
然后,您可以正常调用
base

public Resident() 
    : base() 
{
}

如果希望构造函数的访问权限是公共的,则应为构造函数添加
public
关键字:

public Person(String aName, String aSurname, String aAddress1,
              String aAddress2, String aTelephone, String aFaxNumber)
{
    ...
}
如果它们在同一个项目上,也可以使用
internal
,或者
protected
,因为一个是另一个的基础,等等,但这一切都取决于您真正想要访问的ctor修改器


默认的访问修饰符是
private
,它不允许来自该类之外的任何内容访问该类。

在我看来,这应该可以:

public class Person
{
    private String name;
    private String surname;
    private String address1;
    private String address2;
    private String telephone;
    private String faxNumber;

    public Person(String aName, String aSurname, String aAddress1, String aAddress2, String aTelephone, String aFaxNumber)
    {
        name = aName;
        surname = aSurname;
        address1 = aAddress1;
        address2 = aAddress2;
        telephone = aTelephone;
        faxNumber = aFaxNumber;
    }

public class Resident : Person
{
    private String IDNumberPrim;
    private String IDNumberSec1;
    private String IDNumberSec2;
    private String IDNumberSec3;
    private String IDNumberSec4;
    private String tempID;
    private String passportNumber;


    Resident(String aIDNumberPrim, String aIDNumberSec1, String aIDNumberSec2, String aIDNumberSec3, String aIDNumberSec4, String aTempId, String aPassportNumber) : base(...)

亲切问候,pro

在您输入常驻构造函数的参数列表中的右括号后,尝试在大括号前说“:Person(…)”,并在“…”中提供适当的参数:

Resident(字符串aName、字符串aSurname、字符串aaddress 1、字符串aaddress 2、字符串aTelephone、字符串aFaxNumber、,
字符串AIDNUMBERRIM、字符串AIDNUMBERSC1、字符串AIDNUMBERSC2、字符串AIDNUMBERSC3、字符串AIDNUMBERSC4、字符串aTempId、字符串aPassportNumber)
:Person(aName、aSurname、aaddress 1、aaddress 2、电话录音机、aFaxNumber)
{
}

为什么不起作用?它说了什么?除了回答关于当它不工作时会发生什么的问题外,请显示您尝试
base
失败的代码,这样我们可以告诉您它有什么问题。好的,我现在已经按照您的建议编辑了代码,但是base()中的每个参数都给出了错误消息:“名称‘xxx’在当前上下文中不存在。”其中,xxx替换为适当的参数。