2017-02-13 5 views
-6

私は短い質問があります。私はクラスBankを持っていますが、コンストラクタの量が異なるプロパティが必要です。異なる量のコンストラクタを要求するプロパティ

class Program 
{ 
    static void Main(string[] args) 
    { 
     Bank ing = new Bank("ing"); 
     int AccountNrName1 = ing.OpenAccount("Name", "LastName", "HouseNumber", "PostalCode"); 
     int AccountNrName2 = ing.OpenAccount("Name", "LastName", "HouseNumber", "PostalCode", Balance, Minimum); 
} 

コンストラクタ "OpenAccount"は、両方のケース(AccountNrName1、AccountNrName2)を返す必要があります。 - そう、あなたがオブジェクトを作成しているので、(コンストラクタをしたいように見える一方で、しかし、あなたが作ることができ

public class Bank 
{ 
    private string name, lastname, housenumber, postalcode; 
    private int openaccount; 
    private int balance; 
    private int min; 

    public int OpenAccount(string Name, string LastName, string HouseNumber, string PostalCode, int Balance, int Min) 
    { 
     name = Name; 
     lastname = LastName; 
     housenumber = HouseNumber; 
     postalcode = PostalCode; 
     balance = Balance; 
     min = Min; 

     return openaccount; 
    } 
} 
+6

[コンストラクタ](https://msdn.microsoft.com/en-us/library/ace5hbzh.aspx)については、現在入手しているものを参照してください。 – Habib

+0

あなたの質問は何ですか?また、OpenAccountはメソッドであり、コンストラクタではありません。 – Magnetron

+0

これらはコンストラクタではなく、関数です。関数またはコンストラクタが必要ですか? – Rick

答えて

0

方法は、オプションのパラメータを持つことができます、しかし、あなたはまた、オーバーロードすることができます:ここでは私がこれまでにしたものですその方法..しかし、あなたは最初に、オブジェクトを作成する必要があります):!

潜在的にあなたがこれらの条件を可能にするために2コンストラクタを持つことができます:

public OpenAccount (String name, String LastName, String Housenumber, String Postcode) 
{ do stuff } 
public OpenAccount (String name, String LastName, String Housenumber, String Postcode, int balance, int min) 
{ do stuff } 

それとも、

を行うことができます

これは、値が提供されていない場合にこれらの値を自動的に設定できるようにします。私はそれがコンストラクタのために働くチェックをしなかったが、それはすべきである。

+0

コンストラクタを追加すると 'AccountNrName1'と' AccountNrName2'が返されません... – Sayse

+0

いいえ、それは名前などでオブジェクト全体を返すでしょう。 – BugFinder

+0

ああ私が必要なものです。助けてくれてありがとう – gowiththestackflow

0

アカウント情報を保持するクラスが必要です。

public class Account { 

    public Account(int accountNumber) { AccountNumber = accountNumber; } 

    public int AccountNumber { get; private set; } 
    public string Name { get;set; } 
    public string LastName { get;set; } 
    public string HouseNumber { get;set; } 
    public string PostalCode { get;set; } 
    public int Balance { get;set; } 
    public int Min { get;set; } 
} 

Bankは、アカウントのコレクションを保持し、あなたが開くことができるようになりますだから今、あなたは

class Program { 
    static void Main(string[] args) { 
     Bank ing = new Bank("ing"); 
     Account AccountNrName1 = ing.OpenAccount("Name", "LastName", "HouseNumber", "PostalCode"); 
     Account AccountNrName2 = ing.OpenAccount("Name", "LastName", "HouseNumber", "PostalCode", Balance, Minimum); 
    } 
} 

口座を開設する銀行を呼び出すときに戻って取得する必要

public class Bank { 

    string name; 
    int accountIds = 0; 
    List<Account> accounts = new List<Account>(); 

    public Bank(string bankName) { 
     name = bankName; 
    } 

    //Open an account and return the account number 
    //Using optional parameters to allow 
    //OpenAccount("Name", "LastName", "HouseNumber", "PostalCode"); 
    //OpenAccount("Name", "LastName", "HouseNumber", "PostalCode", Balance, Minimum); 
    public Account OpenAccount(string Name, string LastName, string HouseNumber, string PostalCode, int Balance = 0, int Min = 0) { 
     var newAccount = new Account(++accountIds) { 
      Name = Name; 
      LastName = LastName; 
      HouseNumber = HouseNumber; 
      PostalCode = PostalCode; 
      Balance = Balance; 
      Min = Min; 
     }; 
     accounts.Add(newAccount); 
     return newAccount;  
    } 
} 

アカウント開かれたアカウントにはすべてのプロパティが設定されます。

関連する問題