开发者社区 问答 正文

C#-如果基类没有构造函数,我可以从类继承吗?

所以我有一个没有构造函数的Vehicle类。我想创建一个名为VehicleExtended的新类,该类继承自Vehicle。错误是:“车辆”不包含带有0个参数的构造函数(CS1729)

没有构造函数就可以继承吗?

注意:我无法编辑基类,因为它只是我可以看到的元数据。

public class VehicleData : Vehicle { [BsonId]public int _id { get; private set;} public bool IsCompany { get; private set;} public int OwnerID { get; private set; } public string modelName { get; private set;} }

展开
收起
被纵养的懒猫 2019-09-23 17:22:48 417 分享 版权
阿里云 AI 助理回答

在C#中,当你创建一个继承自另一个类的新类时,如果基类没有默认构造函数(即没有参数的构造函数),那么子类在实例化时需要显式地调用基类的一个构造函数。由于你不能编辑Vehicle基类且它没有无参构造函数,你需要在VehicleExtended类的构造函数中使用base关键字来调用Vehicle类的一个存在的构造函数。

但是根据你的描述,实际上你展示的类名是VehicleData而不是VehicleExtended,我将基于这个实际类名进行说明:

如果你的Vehicle类确实有其他带有参数的构造函数,你应该这样修改你的VehicleData类以解决CS1729错误:

public class VehicleData : Vehicle
{
    [BsonId]
    public int _id { get; private set; }

    public bool IsCompany { get; private set; }

    public int OwnerID { get; private set; }

    public string modelName { get; private set; }

    // 假设Vehicle类有一个接受int类型参数的构造函数
    public VehicleData(int someParameterForVehicle, int id, bool isCompany, int ownerId, string modelName) 
        : base(someParameterForVehicle)
    {
        _id = id;
        IsCompany = isCompany;
        OwnerID = ownerId;
        this.modelName = modelName;
    }
}

在这个例子中,我假设Vehicle类有一个需要整数参数的构造函数。你需要将someParameterForVehicle替换为实际的参数名称和类型,确保它与Vehicle类的实际构造函数签名相匹配。

如果Vehicle类有多个构造函数,选择适合你场景的那个,并相应地调整VehicleData类的构造函数参数。如果Vehicle没有任何公开的构造函数(即它们都是私有的或受保护的),那么在不修改基类的情况下,你是无法直接继承它的,这通常意味着设计上不允许这样的继承关系。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答地址: