Инициализация одномерного массива из других одномерных массивов - PullRequest
0 голосов
/ 11 апреля 2020

Я чувствую, что у этого есть действительно простой ответ, и я просто не могу получить его, но вот мой выстрел на нем после того, как я не нашел ничего связанного с inte rnet.
По сути, я хотел бы сделать что-то вроде этого из javascript в C#:

var abc = ["a", "b", "c"]
var abcd = [...abc, "d"]

«Распространение» содержимого одномерного массива abc в другой одномерный массив abcd, добавление нового значения во время инициализации.
Репликация этого поведения в C#, однако, не будет работать должным образом:

string[] abc = { "a", "b", "c" };
string[] abcd = { abc, "d" };

Самое близкое, что я получил к репликации этого в C#, было со списками Примерно так:

string[] abc = { "a", "b", "c" };
var abcd = new List<string>();
abcd.AddRange(abc);
abcd.Add("d");

Я мог бы сохранить строку в вышеприведенном примере, непосредственно инициализировав List строкой "d" (порядок для меня не имеет значения, я Я просто проверю, содержит ли коллекция определенный элемент, который я ищу), но использование List само по себе крайне неэффективно по сравнению с инициализацией массива, поскольку я не собираюсь изменять или добавлять элементы позже.
Есть ли Как я могу инициализировать одномерный массив из других одномерных массивов в одну строку?

Ответы [ 2 ]

2 голосов
/ 11 апреля 2020

Если вы ищете однострочник, вы можете использовать Enumerable.Append() метод . Вы можете добавить .ToArray() в конце, если хотите, чтобы тип abcd был строковым массивом.

Там вы go:

string[] abcd = abc.Append("d").ToArray();

Примечание. Метод Append() доступен в. NET Framework 4.7.1 и более поздних версиях

For. NET Framework 4.7 или старше, одним из способов будет использование Enumerable.Concat() метода :

string[] abcd = abc.Concat(new[] { "d" }).ToArray();
string[] abcde = abc.Concat(new[] { "d", "e" }).ToArray();
1 голос
/ 11 апреля 2020

В 1 строке:

string[] abc = { "a", "b", "c" };
var abcd = new List<string>(abc) { "d" };

Конструктор списка может принимать другой список.

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