2014-12-26 158 views
0

我有一個對象數組。我需要將該數組的第一個元素添加到它的末尾,所以第一個和最後一個元素是相同的。我想出了這個,但我覺得現在有更好的解決方案。將數組的第一個元素添加到同一個數組中

points.Concat(new[] { points[0] }).ToArray()

完全上下文:點的給定的數組

public static Vertex[] CreateLineStrip(Color color, params Vector2f[] points) 
{ 
    return CreateVertices(color, points.Concat(new[] { points[0] }).ToArray()); 
} 

CreateVertices項目頂點數組。

+6

如果你想要不同數量的元素,我不會使用數組來開始。任何你不能使用'List '的理由?然後只是:'list.Add(list [0])' –

+0

@JonSkeet'points'被用作一個方法的'params'參數。我可以用'params'使用列表嗎? – Spans

+0

你的意思是它來自* params參數嗎?知道更多的上下文將是很好的。 (即使你以數組的形式啓動*,或者以數組的形式結束*並不意味着你需要它作爲每個階段的數組......) –

回答

0

考慮下面的擴展方法,內聯與您的意見,您可以添加一些語法糖

但是這裏沒有什麼真是偷雞,除了一個全新的擴展方法

public static class ArrayExtensions 
{ 
    static public T[] Append<T>(this T[] array, T item) 
    { 
     return array.Concat(new[] { item }).ToArray(); 
    } 
} 

public static Vertex[] CreateLineStrip(Color color, params Vector2f[] points) 
{ 
    return CreateVertices(color, points.Append(points[0])); 
} 
0
 public void MyMethod(params Contact[] contacts) 
     { 
      var list = new List<Contact>(contacts); 
      list.Add(list[0]); 

      // ... do your thing 
     } 
相關問題