从另一个调用一个构造函数

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

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;

}

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

这里有一个问题:

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


    喜欢这个:

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

    如果你不想在自己的方法中进行初始化(例如,因为你想在初始化代码之前做太多的事情,或者试着包装它,或者其他任何东西),你不能满意地实现你想要的东西,你可以拥有任何或所有的东西构造函数通过引用初始化例程来传递只读变量,然后可以随意操作它们。

    class Sample
    {
        private readonly int _intField;
        public int IntProperty
        {
            get { return _intField; }
        }
    
        void setupStuff(ref int intField, int newValue)
        {
            intField = newValue;
        }
    
        public Sample(string theIntAsString)
        {
            int i = int.Parse(theIntAsString);
            setupStuff(ref _intField,i);
        }
    
        public Sample(int theInt)
        {
            setupStuff(ref _intField, theInt);
        }
    }
    

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

    : base (parameters)
    
    : this (parameters)
    

    例:

    public class People: User
    {
       public People (int EmpID) : base (EmpID)
       {
          // Add more statements here.
       }
    }
    
    链接地址: http://www.djcxy.com/p/18011.html

    上一篇: Call one constructor from another

    下一篇: What are the rules for calling the superclass constructor?