Передать ссылку на элемент в массиве C # - PullRequest
6 голосов
/ 27 августа 2008

Я строю массив строк с

string[] parts = string.spilt(" ");

И получить массив с X частями, я хотел бы получить копию массива строк, начиная с элемента

parts[x-2]

Кроме очевидного подхода грубой силы (создать новый массив и вставить строки), есть ли более элегантный способ сделать это в C #?

Ответы [ 5 ]

6 голосов
/ 19 декабря 2008

Я вспомнил, что отвечал на этот вопрос, и только что узнал о новом объекте, который может обеспечить высокопроизводительный метод выполнения того, что вы хотите.

Взгляните на ArraySegment<T>. Это позволит вам сделать что-то вроде.

string[] parts = myString.spilt(" ");
int idx = parts.Length - 2;
var stringView = new ArraySegment<string>(parts, idx, parts.Length - idx);
2 голосов
/ 27 августа 2008

Как насчет Array.Copy?

http://msdn.microsoft.com/en-us/library/aa310864(VS.71).aspx

Метод Array.Copy (Массив, Int32, Массив, Int32, Int32)

Копирует диапазон элементов из массива, начиная с указанного исходного индекса, и вставляет их в другой массив, начиная с указанного конечного индекса. Длина и индексы указываются как 32-разрядные целые числа.

0 голосов
/ 10 декабря 2008
List<string> parts = new List<string>(s.Split(" "));
parts.RemoveRange(0, x - 2);

Предполагается, что List<string>(string[]) оптимизирован для использования существующего массива в качестве резервного хранилища вместо выполнения операции копирования, это может быть быстрее, чем копирование массива.

0 голосов
/ 27 августа 2008

Array.Copy Method

Я думаю, что-то вроде:

string[] less = new string[parts.Length - (x - 2)];
Array.Copy(parts, x - 2, less, 0, less.Length);

( без ошибка выключения на 1, которая, я уверен, там есть.)

0 голосов
/ 27 августа 2008

Использование Array.Copy . Он имеет перегрузку, которая делает то, что вам нужно:

Array.Copy (Array, Int32, Array, Int32, Int32)
Копирует диапазон элементов из массива, начиная с указанного источника индексировать и вставлять их в другой массив начиная с указанного пункта назначения индекс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...