如何将带有 int 数组的 double 转换为 ToString 覆盖?

How to convert a double with an int array into a ToString override?

struct SSales
{
    private int[] _years;
    private double[] _sales;
    private Random salesran;

    public SSales (int [] yeararr, double[] salesarr)
    {
        //yeararr = Enumerable.Range(2000, 10).ToArray();
        _years = yeararr;
        _sales = salesarr;
        double max = 50000.00;
        double min = 1000.00;
        salesran = new Random();
        for (int i = 0; i < yeararr.Length; i++) 
        {
            for (int j = 0; j < salesarr.Length; j++)
            {
                salesarr[j] = Math.Round((salesran.NextDouble() * (max - min) + min), 2);                         
            }
        }
    }

    public override string ToString()
    {
        string itemstring; //string.join?
        return itemstring;
    }

您好!我是一名新的 C# 学生,我在使用结构时遇到了一些困难。当按下生成按钮时,它应该调用结构 SSales 并为每年生成 10 个随机销售数字,并使用 ToString 覆盖将它们输入到列表框中,如上图所示。

编辑 tostring 覆盖格式应如下:

int[]year + "empty space" + "$" + double[]sales.

我必须使用 int[] 和 double[]。

我知道我应该使用 string.Join,但我不知道如何将两个不同类型的数组组合成一个字符串数组。生成数组工作正常,我对其进行了测试,我只需要知道如何使用 ToString 覆盖。如有任何帮助,我们将不胜感激!

编辑 2 我还应该注意,我也在使用冒泡排序来组织生成后的这些,这可能会使一些答案复杂化。

private void Sortbutton_Click(object sender, EventArgs e)
    {
        if (yearradio.Checked)
        {
            int temp = 0;
            for (int i = 0; i < yeararr.Length; i++)
            {
                for (int j = 0; j < yeararr.Length; j++)
                {
                    if (yeararr[i] < yeararr[j])
                    {
                        temp = yeararr[i];
                        yeararr[i] = yeararr[j];
                        yeararr[j] = temp;
                    }
                }
            }
        }

        if (salesradio.Checked)
        {
            double temp2 = 0.0;
            for (int i = 0; i < salesarr.Length; i++)
            {
                for (int j = 0; j < salesarr.Length; j++)
                {
                    if (salesarr[i] > salesarr[j])
                    {
                        temp2 = salesarr[i];
                        salesarr[i] = salesarr[j];
                        salesarr[j] = temp2;
                    }
                }
            }
        }
        //   for (int i = 0; i < yeararr.Length; i++)
        // {
        //    for (int j = 0; j < salesarr.Length; j++)
        //    {
        //        listBox1.Items.Add();
        //    }
        // }
    }

结构中不应包含数组。该结构应包含一年的信息:

struct SSales
{
    public int Year { get; private set; }
    public double Sales { get; private set; } // This should REALLY be decimal type

    public SSales(int year, double sales) : this()
    {
        Year = year;
        Sales = sales;
    }

    public override string ToString()
    {
        return string.Format("{0}    ${1:F2}", Year, Sales);
    }
}

然后你可以在你的应用程序中有一个销售数组:

Random salesran = new Random();
SSales[] sales = new SSales[10];
for (int i = 2000;i < 2010;++i)
    sales[i] = new SSales(i, /* random number like you have */);

现在,当您将销售数组对象添加到列表框时,它们将根据您的结构的 ToString() 覆盖列出。