【问题标题】:How do I use the string array and Dictionary in a method如何在方法中使用字符串数组和字典
【发布时间】:2019-05-12 13:46:22
【问题描述】:

我正在尝试创建一个可用作银行帐户的程序。 4种方法,包括存款,提款,打印和创建。当我试图在Program.cs 中创建一个开关循环时,当我遇到“创建”时:我不知道如何使用我创建的方法(我的开关循环也拒绝工作)。

我尝试从 switch 循环切换到 while 以解决循环问题,虽然我做对了,但我仍然不知道如何使用该方法。我正在学习一个有假设答案的课程,但是当我尝试它时,它就是行不通。

这是该方法的外观:

private static void Create(string[] cmdArgs, Dictionary<int, BankAccount> accounts)
{
    var id = int.Parse(cmdArgs[1]);

    if (accounts.ContainsKey(id))
    {
        Console.WriteLine("Account already exists.");
    }
    else
    {
        var acc = new BankAccount();
        acc.ID = id;
        accounts.Add(id, acc);
    }
}

这就是我尝试实现它的方式:

string command;

var cmdArgs = command.Split();
var cmdType = cmdArgs[0];

switch (cmdType)
{
    case "Create":
        Create(cmdArgs, accounts);
        break;
}

我的课就是这样展示的(方法也是一样的)

var cmdArgs = command.Split();
var cmdType = cmdArgs[0];

switch (cmdType)
{
    case "Create":
        Create(cmdArgs, accounts);
        break;

    case "Deposit":
        Deposit(cmdArgs, accounts);
        break;

    case "Withdraw":
       break;
}

我说“帐户”在这种情况下不存在。

我希望我的方法能够创建一个带有 ID 和余额的银行帐户,但程序甚至无法启动。

【问题讨论】:

  • 您的 r 程序中有 Dictionary 帐户吗?任何地方?如果是的话在哪里如果不是然后添加它。
  • 是的,我的主 Program.cs 旁边有一个 BankAccounts 类
  • 当您说“旁边”时,您的意思是在程序类的范围内吗?你写的错误说你在调用函数的范围内没有这个变量。

标签: c# class methods cycle


【解决方案1】:

因为“accounts”和“Accounts”是不同的字符串。您应该对 cmdArgs[0] 和使用小写\大写值的用例应用小写或大写。

对于相同的任务,我更喜欢使用 enum 和自定义 TypeConverter

【讨论】:

    【解决方案2】:

    据我所知,您的方法有两个问题。首先,您永远不会声明您的 accounts 变量。就您的程序而言,它不存在,因此出现错误。

    另一件事是您似乎从未为command 分配任何内容,因此即使您添加了accounts,您仍然会遇到问题,因为您无法拆分不存在的字符串.

    这是您的代码应该是这样的,commandaccounts 都声明并初始化了。

    Dictionary<int, BankAccount> accounts = new Dictionary<int, BankAccount>();
    
    // In reality you'd get this string from elsewhere, like a Console.ReadLine or such
    string command = "Create 123";
    
    var cmdArgs = command.Split();
    var cmdType = cmdArgs[0];
    
    switch (cmdType)
    {
        case "Create":
            Create(cmdArgs, accounts);
            break;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-18
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      相关资源
      最近更新 更多