我有一个数组:
String[] ay = {
"blah",
"blah number 2"
"etc" };
...但是现在我想稍后添加到这个数组,但我认为没有选择这样做。如何才能做到这一点?我不断收到一条消息,说String不能转换为String []。
谢谢
答案 0 :(得分:6)
使用List而不是数组:
List<string> list = new List<string>();
list.Add( "blah" ) ;
然后,如果你确实需要它作为数组:
string[] ay = list.ToArray();
答案 1 :(得分:3)
数组具有固定大小,因此在创建之后,您无法更改它的大小(不创建新的数组对象)
使用List<string>
代替数组。
答案 2 :(得分:2)
声明后,数组无法更改其大小。而是使用集合。例如:List
。
答案 3 :(得分:0)
正如大家已经说过的那样,在System.Collections.Generic命名空间中使用List。 您还可以使用Hashtable,它允许您为每个字符串赋予一个含义,或“key”,这使您可以轻松地使用关键字提取某个字符串。 (至于为了任何目的保留存储在存储空间中的消息。) 您还可以在每次添加值时创建新数组,使新数组1大于旧数组,将第一个数组中的所有数据复制到第二个数组中,然后在最后一个插槽中添加新值(长度 - 1) 然后用新的数组替换旧数组。 这是最常用的手动方式。 但List和Hashtable工作得非常好。
答案 4 :(得分:0)
如果您不需要索引特定的数组元素(使用括号),但您希望能够有效地添加或删除元素,则可以使用LinkedList。
答案 5 :(得分:0)
如果确实需要建立索引 看看System.Collection中的Dictionary数据类型
http://msdn.microsoft.com/en-us/library/xfhwa508.aspx
所以你可以做类似
的事情 Dictionary<int, string> dictionary = new Dictionary<int, string>();
dictionary.Add(1, "afljsd");
答案 6 :(得分:0)
这是一个扩展方法,用于将数组添加到一起并创建一个新的字符串数组
public static class StringArrayExtension
{
public static string[] GetStringArray (this string[] currentArray, string[] arrayToAdd)
{
List<String> list = new List<String>(currentArray);
list.AddRange(arrayToAdd);
return list.ToArray();
}
}
答案 7 :(得分:0)
你可以这样做,但我不推荐它:
// Reallocates an array with a new size, and copies the contents
// of the old array to the new array.
// Arguments:
// oldArray the old array, to be reallocated.
// newSize the new array size.
// Returns A new array with the same contents.
public static System.Array ResizeArray (System.Array oldArray, int newSize) {
int oldSize = oldArray.Length;
System.Type elementType = oldArray.GetType().GetElementType();
System.Array newArray = System.Array.CreateInstance(elementType,newSize);
int preserveLength = System.Math.Min(oldSize,newSize);
if (preserveLength > 0)
System.Array.Copy (oldArray,newArray,preserveLength);
return newArray;
}