如何在方法中使用字符串数组和字典

时间:2019-05-12 13:46:22

标签: c# class methods cycle

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

我尝试从切换循环切换到一段时间以解决循环问题,尽管我没错,但我仍然不知道如何使用该方法。我正在从一个应该有答案的课程开始工作,但是当我尝试该课程时,它只是无效。

这是该方法的外观:

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和余额的银行帐户,但是该程序甚至无法启动。

2 个答案:

答案 0 :(得分:0)

因为“ a 个帐户”和“ A 个帐户”是不同的字符串。您应该将小写或大写应用于cmdArgs [0],并使用具有小写\大写值的用例。

我更喜欢将enum与自定义TypeConverter一起使用来完成相同的任务。

答案 1 :(得分:0)

据我所知,您的方法有两个问题。首先,您永远不要声明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;
}