C# 我对银行账户表中的一些错误有疑问
嘿,伙计们,我之前在上一节课上涉猎过面向对象编程。我正在用C#做一张银行账户表。我一次只学一点,这样我就能从错误中吸取教训。我有我的程序文件和帐户文件。我在我的程序文件中评论了哪里有错误以及他们说了什么,并将在下面发布。谢谢你抽出时间来帮助我 更新这是我的更新代码: 名称空间银行帐户银行 { 公共部分类Form1:Form { 公共表格1() { 初始化组件(); }C# 我对银行账户表中的一些错误有疑问,c#,C#,嘿,伙计们,我之前在上一节课上涉猎过面向对象编程。我正在用C#做一张银行账户表。我一次只学一点,这样我就能从错误中吸取教训。我有我的程序文件和帐户文件。我在我的程序文件中评论了哪里有错误以及他们说了什么,并将在下面发布。谢谢你抽出时间来帮助我 更新这是我的更新代码: 名称空间银行帐户银行 { 公共部分类Form1:Form { 公共表格1() { 初始化组件(); } private static void Bank(string[] args) { //
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
事件的处理程序中调用它加载的
是一个混乱的文件,因为它是在另一个方法中定义的。方法的不应该(从技术上讲,从C#7开始可以)这样做(除了匿名或“lambda”方法)。将它放入类范围内就可以了WriteFile
- 也要摆脱那些
成员。在你真正知道你在做什么之前,避免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}";
}
}
}