如何使用"链接这两个构造函数:this()

时间:2017-12-03 14:00:04

标签: c# .net

我有一个任务,用两面墙w1,w2建造一个房间 我已经完成了设置并得到了 我只有两个构造函数,第一个从用户获取宽度,高度,厚度 第二个构造函数默认放置thick = .025f。 我不想用传统方式制作第二个构造函数 我想要它使用 :this(_w1width,_w1height,0.25f,_w2width,_w2height,0.25f)

如何通过"来连接这两个构造函数:this()"

public Room(float _w1width, float _w1height, float _w1thick, float _w2width, float _w2height, float _w2thick)
    {
        w1 = new Wall(_w1width, _w1height, _w1thick);
        w2 = new Wall(_w2width, _w2height, _w1thick);

    }
    public Room(float _w1width, float _w1height, float _w1thick,
        float _w2width, float _w2height, float _w2thick)
        : this(_w1width,_w1height,0.25f,_w2width,_w2height,0.25f)
    { }

错误2以下方法或属性之间的调用不明确:' ClassesRelations.Room.Room(float,float,float,float,float,float)'和' ClassesRelations.Room.Room(float,float,float,float,float,float)' D:\ ITI courses \ obb \ projects \ ClassesRelations \ ClassesRelations \ Room.cs 56 15 ClassesRelations

  

键入' ClassesRelations.Room'已经定义了一个名为' Room'   使用相同的参数类型D:.. \ Room.cs

1 个答案:

答案 0 :(得分:0)

在您的用例中,我认为第二个构造函数应该只接受长方体的宽度和高度。  public room(float _w1width,float _w1height,         float _w2width,float _w2height)         :this(_w1width,_w1height,0.25f,_w2width,_w2height,0.25f)     {}

不允许使用具有相同签名的前2个构造函数/方法。 https://en.wikibooks.org/wiki/Computer_Programming/Function_overloading

构造函数链接是从另一个构造函数调用一个构造函数相对于当前对象的过程。

enter image description here

在您的代码中,使用6个浮点类型参数调用时,编译器无法区分要使用的构造函数定义。