在 C# 中使用 List 作为参数创建 class 的实例
Creating instance of a class with List as a parameter in C#
您好,我正在尝试使用 3 classes-Bank、Account、Mainprogram 创建一个银行应用程序。在我的主程序中,我有一个选项供用户添加新的银行帐户。在我的银行 class 我有我的属性、构造函数和添加帐户方法。
class Bank
{
// Attributes
private List<int> accounts { get; set; }
private int number_of_accounts { get; set; }
//Constructor
public Bank(List<int> accounts, int number_of_accounts)
{
this.accounts= accounts;
this.number_of_accounts = number_of_accounts;
}
public void AddNewAccount(int accountNumber)
{
accounts.Add(accountNumber);
Console.WriteLine("Account with number " + accountNumber+ "has been added!");
}
在我的 Main 中,我有一个菜单,用户可以在其中选择 1.Add 我调用方法的帐户。
public static bool MainMenu()
{
Bank myBank = new Bank(accounts, 0); <----- Error here,
switch ()
{
case "1":
// Function
Console.WriteLine("Write the account number desired:");
int userInput= Convert.ToInt32(Console.ReadLine());
myBank.AddNewAccount(userInput);
return true;
case "2":
// Function
我的 MainMenu 中的第 3 行显示“名称 'accounts' 在当前上下文中不存在”。
问题是“accounts”不存在,您还没有创建任何名为 accounts 的变量。要解决此问题,请执行以下操作:
var accounts = new List<int>();
Bank myBank = new Bank(accounts, 0);
或
Bank myBank = new Bank(new List<int>(), 0);
您可以只在 class 中使用默认构造函数,如下所示:
class Bank
{
public Bank()
{
this.accounts = new List<int>();
this.number_of_accounts = 0;
}
... rest of code (from your original question)
}
此外,银行class不应该将帐户数量作为参数。您已经在传递帐户列表(或帐户 ID)。最好使用帐户列表来获取帐户数量,如下所示:
private int number_of_accounts
{
get
{
return accounts.Count;
}
}
你必须注意一些事情:
通常 private
用于字段,而不用于属性。您可以完全控制您的私有字段,因此通常您不会定义为私有属性。
private readonly List<int> accounts;
private int number_of_accounts;
此外,number_of_accounts
是多余的。是 accounts.Count
。所以最好使用accounts.Count
,避免修改账号时忘记更新number_of_accounts
的问题。
number_of_accounts
必须是 public
(还有一个 属性 而不是一个字段,因为是 public)并且只有 get
(没有 set
因为您不能直接更改大小,您可以插入或删除值)。
public int number_of_accounts => accounts.Count;
您不需要带有帐户列表的构造函数。只需创建列表。稍后,使用 AddNewAccount
等方法添加元素。
public Bank()
{
this.accounts= new List<int>();
}
如果需要,您可以拥有一个带有初始值列表的构造函数。但要避免使用该列表,因为在外部,您的代码可以修改该列表,最好让您的 class 完全控制其字段。
public Bank(List<int> accounts)
{
this.accounts= new List<int>();
this.accounts.AddRange(accounts);
}
您好,我正在尝试使用 3 classes-Bank、Account、Mainprogram 创建一个银行应用程序。在我的主程序中,我有一个选项供用户添加新的银行帐户。在我的银行 class 我有我的属性、构造函数和添加帐户方法。
class Bank
{
// Attributes
private List<int> accounts { get; set; }
private int number_of_accounts { get; set; }
//Constructor
public Bank(List<int> accounts, int number_of_accounts)
{
this.accounts= accounts;
this.number_of_accounts = number_of_accounts;
}
public void AddNewAccount(int accountNumber)
{
accounts.Add(accountNumber);
Console.WriteLine("Account with number " + accountNumber+ "has been added!");
}
在我的 Main 中,我有一个菜单,用户可以在其中选择 1.Add 我调用方法的帐户。
public static bool MainMenu()
{
Bank myBank = new Bank(accounts, 0); <----- Error here,
switch ()
{
case "1":
// Function
Console.WriteLine("Write the account number desired:");
int userInput= Convert.ToInt32(Console.ReadLine());
myBank.AddNewAccount(userInput);
return true;
case "2":
// Function
我的 MainMenu 中的第 3 行显示“名称 'accounts' 在当前上下文中不存在”。
问题是“accounts”不存在,您还没有创建任何名为 accounts 的变量。要解决此问题,请执行以下操作:
var accounts = new List<int>();
Bank myBank = new Bank(accounts, 0);
或
Bank myBank = new Bank(new List<int>(), 0);
您可以只在 class 中使用默认构造函数,如下所示:
class Bank
{
public Bank()
{
this.accounts = new List<int>();
this.number_of_accounts = 0;
}
... rest of code (from your original question)
}
此外,银行class不应该将帐户数量作为参数。您已经在传递帐户列表(或帐户 ID)。最好使用帐户列表来获取帐户数量,如下所示:
private int number_of_accounts
{
get
{
return accounts.Count;
}
}
你必须注意一些事情:
通常 private
用于字段,而不用于属性。您可以完全控制您的私有字段,因此通常您不会定义为私有属性。
private readonly List<int> accounts;
private int number_of_accounts;
此外,number_of_accounts
是多余的。是 accounts.Count
。所以最好使用accounts.Count
,避免修改账号时忘记更新number_of_accounts
的问题。
number_of_accounts
必须是 public
(还有一个 属性 而不是一个字段,因为是 public)并且只有 get
(没有 set
因为您不能直接更改大小,您可以插入或删除值)。
public int number_of_accounts => accounts.Count;
您不需要带有帐户列表的构造函数。只需创建列表。稍后,使用 AddNewAccount
等方法添加元素。
public Bank()
{
this.accounts= new List<int>();
}
如果需要,您可以拥有一个带有初始值列表的构造函数。但要避免使用该列表,因为在外部,您的代码可以修改该列表,最好让您的 class 完全控制其字段。
public Bank(List<int> accounts)
{
this.accounts= new List<int>();
this.accounts.AddRange(accounts);
}