C# 我对银行账户表中的一些错误有疑问

C# 我对银行账户表中的一些错误有疑问,c#,C#,嘿,伙计们,我之前在上一节课上涉猎过面向对象编程。我正在用C#做一张银行账户表。我一次只学一点,这样我就能从错误中吸取教训。我有我的程序文件和帐户文件。我在我的程序文件中评论了哪里有错误以及他们说了什么,并将在下面发布。谢谢你抽出时间来帮助我 更新这是我的更新代码: 名称空间银行帐户银行 { 公共部分类Form1:Form { 公共表格1() { 初始化组件(); } private static void Bank(string[] args) { //

嘿,伙计们,我之前在上一节课上涉猎过面向对象编程。我正在用C#做一张银行账户表。我一次只学一点,这样我就能从错误中吸取教训。我有我的程序文件和帐户文件。我在我的程序文件中评论了哪里有错误以及他们说了什么,并将在下面发布。谢谢你抽出时间来帮助我

更新这是我的更新代码:

名称空间银行帐户银行 { 公共部分类Form1:Form { 公共表格1() { 初始化组件(); }

    private static void Bank(string[] args) 

    {

        // Create a list of accounts

        var accounts = new List<Account>

        {

            new Account("Dopey", 500),  //just put these accounts as a place holder

            new Account("Sleepy"),

            new Account("Sneezy", 300)
        };
        // Write these records to a file


        WriteFile(accounts); //I still don't see a text file after running this
    }

    private static void WriteFile(List<Account> accounts)
    {
        throw new NotImplementedException();
    }

    private void Submitbtn_Click(object sender, EventArgs e)
    {
        double x;


        if (OpenRdo.Checked == true && Nametxtbx.TextLength > 0)
        {
            double.TryParse(Nametxtbx.Text, out x);
            MessageBox.Show("Account Created", "Create Account", MessageBoxButtons.OK, MessageBoxIcon.Information);
            Nametxtbx.Text = Name; // should it be acctName?

            Random acct = new Random();
            int AccountNumber = acct.Next(5, 1000);// after running and clicking the button there no number  it says system.random
            outputlbl.Text = acct.ToString();
        }




        void WriteFile(List<Account> accts) //"static is not valid for this item" what other item can i put here then?

        {

            StreamWriter outputFile = File.CreateText("accounts.txt");

            string record;

            foreach (var acct in accts)

            {

                record = $"{acct.Name},{acct.Balance}";

                Console.WriteLine($"Writing record: {record}");

                outputFile.WriteLine(record);

            }

            outputFile.Close();

        }

Main
负责作为程序的入口点。特别是,它显示了第一个表单。它确实不应该是
Form1
的一部分。请在那里指定其他方法

  • 如果您需要在启动时运行该函数,可以从
    Form1
    的构造函数调用它,或者在
    加载的
    事件的处理程序中调用它

  • WriteFile
    是一个混乱的文件,因为它是在另一个方法中定义的。方法的不应该(从技术上讲,从C#7开始可以)这样做(除了匿名或“lambda”方法)。将它放入类范围内就可以了

  • 也要摆脱那些
    static
    成员。在你真正知道你在做什么之前,避免
    static
    (需要
    Main
    的地方除外)是一条很好的经验法则

检查您的项目中是否有另一个文件,可能名为
program.cs
。您还有另一个主文件。您的WriteFile调用是否包含在单击方法中?请修复打开和关闭的括号。请格式化您的代码,不要使用所有空行和实际缩进。有一个program.cs文件是“程序的入口点”如何更改?WriteFile位于第一个静态mainvs studio中,它在program.cs中为您生成了一个main。您不应该再添加一个。关于第二点,C#7添加了这样的概念,即在其他方法中只包含方法。一些修饰符,如
static
,是不允许的,但它们的行为与其他方法类似霍德在这个范围内。使用霍德与否是一个好主意,这是另一个历史……。@亚历杭德罗补充道,这是一个很好的观点。不过我会站在“不是一个好主意”一边:D
namespace BankAccountBank
{
class Account
{
    public string Name { get; }

    public decimal Balance { get; private set; }

    public Account(string acctName, decimal acctBalance = 0)

    {
        Name = acctName;
        Balance = acctBalance;
    }

    public void Deposit(decimal amt)
    {
        Balance += amt;
    }

    public void Withdraw(decimal amt)
    {

        if (Balance - amt >= 0)
            Balance -= amt;

        else
            throw new ArgumentOutOfRangeException("Can't withdraw more than balance");

    }

    override public string ToString()
    {
        return $"Account: {Name} / Balance = {Balance:C}";
    }
  }
}