【问题标题】:How to call a constructor within a method in C#如何在 C# 的方法中调用构造函数
【发布时间】:2013-01-11 13:35:50
【问题描述】:

场景是

隐藏 BankAccount 的构造函数。并允许建设 BankAccount,创建一个名为 CreateNewAccount 的公共静态方法 负责创建并返回新的 BankAccount 对象 要求。此方法将充当创建新的工厂 银行账户。

我使用的代码是这样的

private BankAccount()
{
 ///some code here
}

//since the bank acc is protected, this method is used as a factory to create new bank accounts
public static void CreateNewAccount()
{
    Console.WriteLine("\nCreating a new bank account..");
    BankAccount();
}

但这一直抛出错误。我不知道如何在同一个类的方法中调用构造函数

【问题讨论】:

    标签: c# constructor


    【解决方案1】:

    对于factory的方法,它的返回类型应该是BankAccount。在该方法中,private 构造函数可用,您可以使用它来创建新实例:

        public class BankAccount
        {
            private BankAccount()
            {
                ///some code here
            }
    
            public static BankAccount CreateNewAccount()
            {
                Console.WriteLine("\nCreating a new bank account..");
                BankAccount ba = new BankAccount();
                //...
                return ba;
            }
        }
    

    【讨论】:

    • @GireeshSundaram,因为这是您的第一个问题,而且您似乎得到了想要的答案,您可能会看到:How does accepting an answer works
    • @Habib:我总是用这个网站来做我所有的搜索查询。我没有得到这个查询的完美匹配。虽然我想回答几个问题,但我不是那么流利的竞争有专业人士在这里 ;)
    • @GireeshSundaram 我应该在回答中提到这一点:构造函数不是一个简单的方法,它用于实际在内存中创建某种类型的实例(Constructors (C# Programming Guide))。要调用构造函数,您应该使用 new 运算符 new Operator (C# Reference)
    【解决方案2】:

    您实际上应该在该方法中创建一个 BankAccount 的新实例并返回它:

    private BankAccount()
    {
        ///some code here
    }
    
    //since the bank acc is protected, this method is used as a factory to create new bank accounts
    public static BankAccount CreateNewAccount()
    {
        Console.WriteLine("\nCreating a new bank account..");
        return new BankAccount();
    }
    

    【讨论】:

      【解决方案3】:

      使用“新”运算符:

      Foo bar = new Foo();
      

      【讨论】:

      • 是的。 'new' 在 C# 中调用类的构造函数。我只是没有使用他的班级名称。相反,我使用 'Foo' 作为类型名称。
      猜你喜欢
      • 2015-12-24
      • 2014-02-17
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      • 2015-10-01
      • 1970-01-01
      相关资源
      最近更新 更多