0

というクラスに次のコンストラクターがありますBaseRobot

public BaseRobot(int aId)
{
    mId = aId;
    mHome.X = 0;
    mHome = new Point(0, 0);
    mPosition = mHome;
}

public BaseRobot(int aId, int aX, int aY)
{
    mId = aId;
    mHome = new Point(aX, aY);
    mPosition = mHome;
}

BaseRobot別のクラスでコンストラクターを呼び出すにはどうすればよいですか?

4

2 に答える 2

8
var robot = new BaseRobot(7); //calls the first constructor
var robot2 = new BaseRobot(7, 8, 9); //calls the second

派生クラスを作成している場合

public class FancyRobot : BaseRobot
{
   public FancyRobot() : base(7, 8, 9) 
   { // calls the 2nd constructor on the base class
      Console.WriteLine("Created a fancy robot with defaults");
   }
}

//this calls the FancyRobot default constructor, which in-turn calls the BaseRobot constructor
var fancy = new FancyRobot(); 

コンストラクターを直接呼び出すことはありません。コードは、オブジェクトがインスタンス化されたときにのみ実行されます。別のクラスのオブジェクトにプロパティを設定する場合は、クラスのメンバー変数を設定するパブリック プロパティまたはメソッドを作成できます。

public class AnotherRobotType
{
    public string Model {get;set;} // public property
    private int _make; // private property
    public AnotherRobotType() {
    }

    /* these are methods that set the object's internal state
    this is a contrived example, b/c in reality you would use a auto-property (like Model) for this */
    public int getMake() { return _make; }
    public void setMake(int val) { _make = val; } 
}

public static class Program
{
    public static void Main(string[] args)
    {
       // setting object properties from another class
       var robot = new AnotherRobotType();
       robot.Model = "bender";
       robot.setMake(1000);
    }
}
于 2013-08-06T15:52:45.210 に答える
1

クラスのインスタンスを新しく作成すると、コンストラクターが呼び出されます。例、

BaseRobot _robot = new BaseRobot(1);

int パラメーターを受け入れるコンストラクターを呼び出します。

于 2013-08-06T15:53:21.670 に答える