c# - 从另一个调用一个构造函数




4 Answers

喜欢这个:

public Sample(string str) : this(int.Parse(str)) {
}

我有两个构造函数将值提供给只读字段。

class Sample
{
    public Sample(string theIntAsString)
    {
        int i = int.Parse(theIntAsString);

        _intField = i;
    }

    public Sample(int theInt)
    {
        _intField = theInt;
    }


    public int IntProperty
    {
        get { return _intField; }
    }
    private readonly int _intField;

}

一个构造函数直接接收值,另一个构造函数进行一些计算并获取值,然后设置字段。

这里有一个问题:

  1. 我不想复制设置代码。 在这种情况下,只设置一个字段,但当然可能有多个字段。
  2. 为了使字段只读,我需要从构造函数中设置它们,所以我不能将共享代码“提取”到实用程序函数。
  3. 我不知道如何从另一个构造函数中调用一个构造函数。

有任何想法吗?




在构造函数的主体之前,请使用以下任一项:

: base (parameters)

: this (parameters)

例:

public class People: User
{
   public People (int EmpID) : base (EmpID)
   {
      // Add more statements here.
   }
}



这是一个调用另一个构造函数的例子,然后检查它设置的属性。

    public SomeClass(int i)
    {
        I = i;
    }

    public SomeClass(SomeOtherClass soc)
        : this(soc.J)
    {
        if (I==0)
        {
            I = DoSomethingHere();
        }
    }



当您从基类继承一个类时,可以通过实例化派生类来调用基类构造函数

class samle {
    public int x;

    public sample(int value) {
        x = value;
    }
}

class der : public sample {
    public:
        int a;
        int b;

        public der(int value1,int value2) : base(50) {
            a = value1;
            b = value2;
        }

        class run {
            public static void main(String[] args){
                der obj = new der(10,20);
                Console.WriteLine(obj.x);
                Console.WriteLine(obj.a);
                Console.WriteLine(obj.b);
            }
        }

该方案的输出是

50 10 20

您也可以使用此关键字从另一个构造函数调用构造函数

class samle {
    public int x;

    public sample(int value) {
        x = value;
    }

    public sample(sample obj):this(obj.x) {
    }
}

class run{
    public static void main(String[] args) {
        sample s = new sample(20);
        sample ss = new sample(s);
        Console.WriteLine(ss.x);
    }
}

输出是20。




Related

c# constructor