我是C#的新手,我创建了一个包含2个类的小程序(1个是包含main方法的类)。
讲师班:
namespace Exercise4
{
class Account
{
public long accountNo { set; get; }
public double balance { set; get; }
public string [] payees { set; get; }
public long [] payeesAccount { set; get; }
public Account()
{
this.accountNo = 0L;
this.balance = 0.0;
}
public Account(long accountNo,double balance)
{
this.accountNo = accountNo;
this.balance = balance;
}
public Account(long accountNo, double balance, string [] payees, long [] payeesAccount)
{
this.accountNo = accountNo;
this.balance = balance;
this.payees = payees;
this.payeesAccount = payeesAccount;
}
public int DebitAmount(double amount)
{
if ((this.balance - amount) <= this.balance)
return 1;
else
return 0;
}
public int TransferMoney(long payeeAccountNo, double amount)
{
if (payeesAccount.Contains(payeeAccountNo))
return DebitAmount(amount);
else
return -1;
}
public int TransferMoeny(string nickName,double amount)
{
if (payees.Contains(nickName))
return DebitAmount(amount);
else
return -1;
}
public string ToString()
{
string output = "";
output += "\nAccount Number: " + this.accountNo;
output += "\nBalance: " + this.balance;
output += "\nPayee: " + this.payees;
output += "\nPayee Account: " + this.payeesAccount;
return output;
}
}
}
主要方法类:
namespace Exercise4
{
class Program
{
static void Main(string[] args)
{
string [] payee = new [] {"Oli"};
long[] payeesAccount = new[] {1000L};
Account reg = new Account(1000,100.00,payee,payeesAccount);
Console.WriteLine(reg.ToString());
}
}
}
我试图打印数组的值(收款人:Oli,收款人帐户:1000),而不是:
帐号:1000 余额:100 收款人:System.String [] 收款人帐户:System.Int64 []
有什么想法? 感谢
答案 0 :(得分:0)
您可以将string.Join用于此目的
尝试定义您的方法ToString()
,如下所示:
public override string ToString()
{
string output = "";
output += "\nAccount Number: " + this.accountNo;
output += "\nBalance: " + this.balance;
output += "\nPayee: " + string.Join(",", this.payees);
output += "\nPayee Account: " + string.Join(",", this.payeesAccount);
return output;
}
答案 1 :(得分:0)
如果您正确覆盖默认方法ToString()
,那么您可以像这样使用它:
Console.WriteLine(reg);
无需明确地称呼它。
你的overriden方法应如下所示,使用string builder来正确创建动态字符串:
public override string ToString()
{
var output = new StringBuilder();
output.Append("\nAccount Number: " + this.accountNo);
output.Append("\nBalance: " + this.balance);
output.Append("\nPayee: " + string.Join(", ", this.payees));
output.Append("\nPayee Account: " + string.Join(", ", this.payeesAccount));
return output.ToString();
}
使用字符串插值C# 6.0+
更好:
public override string ToString()
{
var output = new StringBuilder();
output.Append($"Account Number: {accountNo}\n");
output.Append($"Balance: {balance}\n");
output.Append($"Payee: {string.Join(", ", payees)}\n");
output.Append($"Payee Account: {string.Join(", ", payeesAccount)}\n");
return output.ToString();
}
但我可以建议您审核您的课程并确定您是否真的需要string[]
而不仅仅是string
,因为我看到您只有一个收款人及其帐户。