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

时间:2011-03-17 14:06:13

标签: 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的无效表达式” 可能有什么不对?

5 个答案:

答案 0 :(得分:11)

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

应该是

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

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

修改:在int name ctor的参数列表中将string name更正为SubStudent

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

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

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

base(id, name)

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

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

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

答案 3 :(得分:1)

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

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

    }

答案 4 :(得分:0)

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

尝试以上代码。