我可以在C#中使用相同的类方法调用构造函数吗?

时间:2016-02-19 14:18:35

标签: c# .net constructor

我可以在constructor中使用相同的类方法调用C#吗?

示例:

class A
{
    public A()
    {
        /* Do Something here */
    }

    public void methodA()
    {
        /* Need to call Constructor here */
    }
}

2 个答案:

答案 0 :(得分:2)

除了提供回答问题的答案之外,解决问题的方法是定义一个从构造函数和方法调用的初始化方法:

class A
{
    private init()
    {
       // do initializations here
    }

    public A()
    {
        init();
    }
    public void methodA()
    {
        // reinitialize the object
        init();

        // other stuff may come here
    }
}

很快,你不能打电话给构造函数,但你不必:)

答案 1 :(得分:1)

简短回答是No:)

除了这些情况之外,你根本不能将构造函数称为简单方法:

1)您正在创建新对象var x = new ObjType() 2)从构造函数中调用另一个相同Type的构造函数。 E.g。

class ObjType
{
   private string _message;

   // look at _this_ being called before executing constructor body
   public ObjType() :this("hello")
   {}

   private ObjType(string message)
   {
       _message = message;
   }
}

3)从构造函数中调用基础构造函数。 E.g。

class BaseType 
{
   private string _message;

   // should be at least protected
   protected BaseType(string message)
   {
       _message = message;
   }
}

class ObjType : BaseType
{
   // look at _base_ being called before executing constructor body
   public ObjType() :base("hello")
   {}
}