如何在C#中扩展数组

3yo*_* af 14 c# arrays input

我必须使用数组进行练习.用户必须输入3个输入(每次输入有关项目的信息),输入将插入到数组中.然后我必须显示数组.

但是,我很难在不改变其中的信息的情况下增加阵列的长度; 以及如何允许用户输入另一组输入?这是我到目前为止:

public string stockNum;
public string itemName;
public string price;

string[] items = new string[3];

public string [] addItem(string[] items)
{
    System.Console.WriteLine("Please Sir Enter the stock number");
    stockNum = Console.ReadLine();
    items.SetValue(stockNum, 0);
    System.Console.WriteLine("Please Sir Enter the price");
    price = Console.ReadLine();
    items.SetValue(price, 1);
    System.Console.WriteLine("Please Sir Enter the item name");
    itemName = Console.ReadLine();
    items.SetValue(itemName, 2);
    Array.Sort(items);
    return items;
}


public void ShowItem()
{
    addItem(items);
    Console.WriteLine("The stock Number is " + items[0]);
    Console.WriteLine("The Item name is " + items[2]);
    Console.WriteLine("The price " + items[1]);
}

static void Main(string[] args)
{
    DepartmentStore depart = new DepartmentStore();
    string[] ar = new string[3];
    // depart.addItem(ar);
    depart.ShowItem();
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题归结为:

  1. 如何允许用户输入多批输入?例如,用户第一次输入有关项目的信息(套接字号,价格和名称),但我需要允许用户输入有关其他项目的更多信息?

  2. 如何根据假设我在数组中有多个项目,显示数组中每个项目的套接字num,price和name?

Nen*_*nad 28

从.NET Framework 3.5开始,对于一维数组,您可以使用Array.Resize<T>方法:

int[] myArray = { 1, 2, 3 };
Array.Resize(ref myArray, 5);
Run Code Online (Sandbox Code Playgroud)

MSDN链接在这里.


alg*_*thm 17

在.NET(C#)中,数组不可调整大小.它与JavaScript或PHP不同,数组非常灵活,可以使用任意元素进行扩展.

根据定义,默认静态数组具有固定大小,因此您可以使用索引引用其中的元素.(http://en.wikipedia.org/wiki/Array_data_structure#Array_resizing)但是你可以阅读有关动态数组的内容.在C#中,它将是System.Collections.ArrayList-Object.(http://en.wikipedia.org/wiki/Dynamic_array)

所以你需要的是ArrayList-Definition或普通列表或通用列表.(System.Collections.Generic.List)

string[] items = new string[3] { "input1", "input2", "input3" };
string[] moreItems = new string[10] { "input4", "input5" };

// array to list
List<string> itemsList = items.ToList<string>();

itemsList.Add("newItem");
// or merge an other array to the list
itemsList.AddRange(moreItems);

// list to array
string[] newArray = itemsList.ToArray();
Run Code Online (Sandbox Code Playgroud)


And*_*gan 7

我想你可能会把问题弄错了......

考虑三个项目(库存号,价格和名称)是较大对象的一部分.现在我们可以称之为item.我们想item在列表或数组中存储多个s.考虑使用这样的面向对象的方法:

class Widget
{
  public int StockNum;
  public int Price;
  public string Name;

  Widget(stockNum, price, name)
  {
    this.StockNum= stockNum;
    this.Price = price;
    this.Name = name;
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以实例化这些对象的列表:

List<Widget> items = new List<Widget>();
Run Code Online (Sandbox Code Playgroud)

并向他们添加项目:

for (int i = 0; i < 5; i++)
{
  //Get input from user
  System.Console.WriteLine("Please Sir Enter the stock number");
  stockNum= Convert.ToInt32(Console.ReadLine()); //This isn't very safe...

  System.Console.WriteLine("Please Sir Enter the price");
  price = Convert.ToInt32(Console.ReadLine()); //This isn't very safe...

  System.Console.WriteLine("Please Sir Enter the item name");
  name = Console.ReadLine();

  //Then add it to a new object
  Widget item = new Widget(stockNum, price, name);

  //And add this item to a list
  items.Add(item);
}
Run Code Online (Sandbox Code Playgroud)