繁体   English   中英

调用基础构造函数c#时出错

[英]error in calling base constructor c#

class Student
{
    int id;
    string name;
    public Student(int id, string name)
    {
        this.id = id;
        this.name = name;
    }
    public int Id
    {
        get { return id; }
        set { id = value; }
    }
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
}
class SubStudent : Student
{
    int ssn;
    public SubStudent(int id, int name, int ssn)
        : base(int id, string name)
    {

    }
}

上面的代码生成错误“term int的无效表达式”可能有什么问题?

public SubStudent(int id, string name, int ssn)
    : base(int id, string name)

应该

public SubStudent(int id, string name, int ssn)
    : base(id, name)

您没有再次声明基本构造函数的签名,您只是在调用它。 和任何其他调用一样,调用站点未指定参数类型。

编辑:SubStudent ctor的参数列表中更正了int namestring name

您不需要在对base的调用中重复类型名称。 它应该是:-

class SubStudent : Student
{    
    int ssn;    
    public SubStudent(int id, string name, int ssn)
        : base(id, name)
    {
    }
}

正如Jon所说,这就是你调用基础构造函数的方式。

我们的想法是为基础构造函数提供参数 ,而不是声明参数 因此,您使用与调用方法时相同的语法:

base(id, name)

请注意,参数不必来自您自己的构造函数参数。 这将是有效的,例如:

public SubStudent(int id, int name, int ssn) : base(10, "fixed name")

在这种情况下,它不太可取,但它是有效的:)

您不应该在基础构造函数调用中放置类型:

public SubStudent(int id, int name, int ssn)
        : base(id, name)
    {

    }
class SubStudent : Student 
{     
    int ssn;     
    public SubStudent(int id, int name, int ssn)         
       : base(id, name)     
    {      
    } 
} 

试试上面的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM