-1

我正在使用包含 5 个项目的链接列表。我创建fruit_trees[] ax了包含项目列表的内容。我收到一个错误,ListForTrees newlist = new ListForTrees(ax);说它有无效的参数。我不确定这个错误。如何通过构造函数正确传递数组?

namespace treeFarm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public class fruit_trees
        {
            private string tree_type = " ";
            private int tree_height = 0;
            public double tree_price = 0;
            private int tree_instock = 0;


            public fruit_trees next_tree;

            public fruit_trees(string newtree, int newheight,  double newprice, int newinstock)
            {
                tree_type = newtree;
                tree_height = newheight;
                tree_price = newprice;
                tree_instock = newinstock;


                next_tree = null;
            }

            public override string ToString()
            {
                return tree_type + " " + tree_height + " " + tree_price + " " + tree_instock;

            }

        }


        public class ListForTrees
        {
            public fruit_trees first_tree;
            public fruit_trees last_tree;

            public int count = 0;

            public ListForTrees(fruit_trees new_tree)
            {
                first_tree = new_tree;
                last_tree = new_tree;
                count = 1;
            }

            public ListForTrees()
            {

            }

            public void AddTree(fruit_trees new_tree)
            {
                fruit_trees current = first_tree;

                if (count == 0)
                {
                    first_tree = new_tree;
                    last_tree = new_tree;
                    count = 1;
                }

                else if (count != 0)
                {
                    if (new_tree.tree_price <= first_tree.tree_price)
                    {
                        new_tree.next_tree = first_tree;
                        first_tree = new_tree;
                    }

                    else if (new_tree.tree_price >= last_tree.tree_price)
                    {
                        last_tree.next_tree = new_tree;
                        last_tree = new_tree;
                    }

                    else
                    {
                        while (new_tree.tree_price > current.next_tree.tree_price)
                        {
                            current = current.next_tree;
                        }

                        new_tree.next_tree = current.next_tree;
                        current.next_tree = new_tree;
                    }

                    count++;
                }
            }

            public void ClearTrees()
            {
                first_tree = null;
                count = 0;
            }
        }

        ListForTrees mainlist = new ListForTrees();


        private void ShowList_Click(object sender, EventArgs e)
        {
            fruit_trees current = mainlist.first_tree;

            while (current != null)
            {

                TxtOutput.AppendText(current.ToString() + Environment.NewLine);          
                current = current.next_tree;
            }

            TxtOutput.AppendText(Environment.NewLine);
        }


        private void BtnGo_Click(object sender, EventArgs e)
        {
            fruit_trees[] ax = {   new fruit_trees("item1", 2, 2.00, 3),
                                             new fruit_trees("item2", 2, 3.95, 6),
                                             new fruit_trees("item3", 5, 9.95, 2),
                                             new fruit_trees("item4", 54, 19.95, 3),
                                             new fruit_trees("item5", 36, 11.85, 2),
                                             new fruit_trees("item6", 62, 13.45, 5)
                                         };

            ListForTrees newlist = new ListForTrees(ax);
            fruit_trees current = newlist.first_tree;

            while (current != null)
            {
                TxtOutput.AppendText(current.ToString() + Environment.NewLine);
                current = current.next_tree;
            }
        }
    }
}
4

2 回答 2

2

您没有采用fruit_trees实例数组的构造函数。您可能希望从另一个集合初始化您的集合,因此您可以添加一个构造函数来添加每个元素:

public ListForTrees(IEnumerable<fruit_trees> trees)
{
    foreach(fruit_trees t in trees)
    {
        this.AddTree(t);
    }
}
于 2012-12-13T00:05:43.527 回答
0

看起来真的很简单。您的ListForTrees构造函数接受 type 的参数,fruit_trees但您传递的参数 type fruit_trees[]

于 2012-12-13T00:05:34.583 回答