在main方法中创建一个对象。打印对象中的数组值

时间:2018-02-22 14:21:24

标签: c#

我是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 []

有什么想法? 感谢

2 个答案:

答案 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,因为我看到您只有一个收款人及其帐户。