3

シナリオは

BankAccount のコンストラクターを非表示にします。また、BankAccount の構築を可能にするために、要求に応じて新しい BankAccount オブジェクトを作成して返す役割を担う CreateNewAccount という public static メソッドを作成します。このメソッドは、新しい BankAccounts を作成するファクトリとして機能します。

私が使用したコードは次のようなものです

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();
}

しかし、これはエラーをスローし続けます。同じクラスのメソッド内でコンストラクターを呼び出す方法がわかりません

4

3 に答える 3

7

メソッドが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;
        }
    }
于 2013-01-11T05:34:47.943 に答える
3

実際には、そのメソッドで の新しいインスタンスを作成し、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();
}
于 2013-01-11T05:35:39.857 に答える
0

「new」演算子を使用します。

Foo bar = new Foo();
于 2013-01-11T05:35:38.907 に答える