2016-10-22 41 views
0

C#泛型對象[]添加其他元素

Object[] a = {"steve","jill"}; 

如何添加其他元素?

a[2]="new york"; //doesn't work of course 

沒有一個a.Add("new york");a.Push("new york");

+3

創建後,你不能改變一個數組的大小。如果您需要動態尺寸,請改用列表。 –

+0

閱讀這個很酷的例子 - https://www.dotnetperls.com/list –

回答

0
Object[] a = { "steve", "jill" }; 
Object[] b = new Object[3]; 
a.CopyTo(b, 0); 
a= b; 
a[2] = "new york"; 
+0

我同意使用列表,但這是一些10歲的代碼。 Intellisence並沒有告訴我,我有一個調整大小。 – user5903880

+0

user5903880這實際上是最好的(最有效的)答案,因爲'Array.Resize'做了這樣的事情,但是帶來更多的開銷https://referencesource.microsoft.com/#mscorlib/system/array.cs,71074deaf111c4e3 – Slai

+0

很長時間因爲我必須做這樣的事情,所以很難記住我真正需要做的是調整數組大小。 – user5903880

1

如果你堅持要用陣列作爲收藏,你必須Resize

Array.Resize(ref a, a.Length + 1); 

    a[a.Length - 1] = "new york"; 

然而,一個多更好的方法是使用專門爲此設計的List<T>

List<object> a = new List<object>() 
    { "steve", "jill" }; 

    a.Add("new york"); 
+0

注意:內部'List '是一個在需要時動態調整大小的數組。問題是,如果_op_使用'List '或'ArrayList' – ja72

+0

@ ja72:'ArrayList'是一個*棄用的*,這就是爲什麼'List '是最好的 –

0

懶惰的低效版本:

Object[] a = {"steve","jill"}; 

a = a.Concat(new Object[]{"new york"}).ToArray(); // add 

a = new Object[]{"new york"}.Concat(a).ToArray(); // insert