2014-12-26 2 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.Add (list [0])' –

+0

@JonSkeet 'points' используется как параметр 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 
     } 
Смежные вопросы