2016-02-12 35 views
1

我想创建一个以3个元素开始的动态数组。我想使用addColumn将一个元素添加到string []名称。但我猜addColumn函数没有达到我的预期。我需要实现这个功能吗?我想我需要像“name.addElement()”这样的东西吗?动态增加一个数组中元素的数量

class LogData 
{ 
    private string[] name; 
    private int numberOfColumns; 

    public LogData() 
    { 
     name = new string[3]; 
     numberOfColumns = name.Length;  
    } 

    public void addColumn() 
    { 
     name = new string[1];// Thats not working, after calling, the number of columns is still 3 
    } 

    public int getNumberofcolumns() 
    { 
     return numberOfColumns; 
    } 
} 

我叫主温控功能:

LogData logData = new LogData(); 

Console.Write(logData.getNumberofcolumns() + "\n"); 
logData.addColumn(); 
Console.Write(logData.getNumberofcolumns() + "\n"); 

Console.Write("done...\n\n"); 
Console.ReadLine(); 

输出是:

3 
3 
done... 
+3

使用'名单<>'如果你想添加的项目。如果你最后需要一个数组,使用'list.ToArray()'。 –

+2

想想'列表'它提供了你需要的一切自动... – Shnugo

+0

类似:https://stackoverflow.com/questions/4840802/change-array-size – SiD

回答

2

你lloking为

public void addColumn() { 
    Array.Resize(ref name, name.Length + 1); 
    } 

但是,恕我直言,更好的解决方案是要改变String[]List<String>

class LogData 
    { 
    private List<String> name = new List<String>(); 

    ... 
    public void addColumn() { 
     name.Add(null); 
    } 
+0

这个功能只是添加一个元素到数组? – xy36

+0

@ xy36:它*调整大小*数组,如果项目被添加*他们将是'null's –

+0

这很好。我假设“旧”数组中的所有数据都将保持不变? – xy36

1

使用List<string>而不是阵列。

1

你只指定的列数一次,它没有得到,只要你把它的名字的长度,整场是没有意义的

public int getNumberofcolumns() 
{ 
    return name.Length; 
} 

注:当然,名单将是首选。

1

你应该使用一个List<string>,它提供了大量的库来操作它,它涵盖了你的所有需求。这里的doc

用法:

List<string> names = new List<string>(); 

//adding an item 
names.Add('YourString'); 
//getting the length 
names.Count(); 
相关问题