Передать ссылку на элемент в массиве C#

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

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

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

parts[x-2]

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
0
4 224
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

Array.Copy (Array, Int32, Array, Int32, Int32)
Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index.

Метод Array.Copy

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

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

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

Ответ принят как подходящий

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

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

Array.Copy Method (Array, Int32, Array, Int32, Int32)

Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. The length and the indexes are specified as 32-bit integers.

List<string> parts = new List<string>(s.Split(" "));
parts.RemoveRange(0, x - 2);

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

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

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

string[] parts = myString.spilt(" ");
int idx = parts.Length - 2;
var stringView = new ArraySegment<string>(parts, idx, parts.Length - idx);

Другие вопросы по теме