Добавление значений в массив C#

Возможно, очень простой - я начинаю изучать C# и мне нужно, например, добавить значения в массив:

int[] terms;

for(int runs = 0; runs < 400; runs++)
{
    terms[] = runs;
}

Для тех, кто использовал PHP, вот что я пытаюсь сделать на C#:

$arr = array();
for ($i = 0; $i < 10; $i++) {
    $arr[] = $i;
}
Комментарии к вопросу (2)
Решение

Вы можете сделать таким образом -

int[] terms = new int[400];
for (int runs = 0; runs < 400; runs++)
{
    terms[runs] = value;
}

Кроме того, вы можете использовать списки - преимущество со списками того, вы Дон'т нужно знать размер массива при создании списка.

List termsList = new List();
for (int runs = 0; runs < 400; runs++)
{
    termsList.Add(value);
}

// You can convert it back to an array if you would like to
int[] terms = termsList.ToArray();

Редактировать: а) по петли на список&ЛТ;Т> немного более чем в 2 раза дешевле, чем цикл foreach петли на список&ЛТ;Т>, б) зацикливание на массиве примерно в 2 раза дешевле, чем зацикливание на список&ЛТ;Т>, с) цикл по массиву, используя ПО в 5 раз дешевле, чем зацикливание на список&ЛТ;П> используя цикл foreach (который большинство из нас делает).

Комментарии (8)

Если вы'вновь пишет на C# 3, Вы можете сделать это один-лайнер:

int[] terms = Enumerable.Range(0, 400).ToArray();

В этом фрагменте кода предполагается, что директива using для System.LINQ, которая в верхней части вашего файла.

С другой стороны, если вы'вновь ищу то, что может быть динамически изменен, так как он появляется в случае для PHP (я'ве никогда не узнал его), то вы можете использовать список<инт> вместо типа int[]. Здесь's что что код будет выглядеть так:

List terms = Enumerable.Range(0, 400).ToList();

Заметим, однако, что вы не можете просто добавить элемент 401-й, устанавливая условия[400] на значение. Вы'd, а не нужен вызов add(), такой:

terms.Add(1337);
Комментарии (0)

Используя в LINQ'ы способ метод concat делает этот простой

int[] array = new int[] { 3, 4 };

array = array.Concat(new int[] { 2 }).ToArray();

результат 3,4,2

Комментарии (1)

Ответы о том, как сделать это с помощью массива предоставлены здесь.

Однако, в C# есть очень удобная вещь под названием Система.Коллекции :)

Коллекции являются необычные альтернативы с помощью массива, хотя многие из них использовать массив внутренне.

Например, в C# есть коллекция называется Список, что функции очень похож на PHP-массив.

using System.Collections.Generic;

// Create a List, and it can only contain integers.
List list = new List();

for (int i = 0; i < 400; i++)
{
   list.Add(i);
}
Комментарии (1)

На основании ответа из Thracx (я Дон'т иметь достаточно очков, чтобы ответить):

public static T[] Add(this T[] target, params T[] items)
    {
        // Validate the parameters
        if (target == null) {
            target = new T[] { };
        }
        if (items== null) {
            items = new T[] { };
        }

        // Join the arrays
        T[] result = new T[target.Length + items.Length];
        target.CopyTo(result, 0);
        items.CopyTo(result, target.Length);
        return result;
    }

Это позволяет добавить больше, чем просто один элемент в массив, или просто передать массив в качестве параметра для объединения двух массивов.

Комментарии (0)

Используя список<Т> В качестве посредника-это самый простой способ, как уже описывали, но поскольку ваш вклад-это массив, и вы не'т вы просто хотите сохранить данные в список, я предполагаю, что вы могли бы быть обеспокоены производительности.

Наиболее эффективным методом является, скорее всего, выделение нового массива, а затем, используя массив.Копия или массива.Метод CopyTo. Это не сложно, если вы просто хотите, чтобы добавить элемент в конец списка:

public static T[] Add(this T[] target, T item)
{
    if (target == null)
    {
        //TODO: Return null or throw ArgumentNullException;
    }
    T[] result = new T[target.Length + 1];
    target.CopyTo(result, 0);
    result[target.Length] = item;
    return result;
}

Я также могу разместить код для вставки метод расширения, который принимает индекс назначения в качестве входных данных, при желании. Это's немного более сложным и использует статический массив методом.Копировать 1-2 раза.

Комментарии (1)

Сначала нужно выделить массив:

int [] terms = new int[400]; // allocate an array of 400 ints
for(int runs = 0; runs < terms.Length; runs++) // Use Length property rather than the 400 magic number again
{
    terms[runs] = value;
}
Комментарии (0)
int ArraySize = 400;

int[] terms = new int[ArraySize];

for(int runs = 0; runs < ArraySize; runs++)
{

    terms[runs] = runs;

}

Вот как бы я это закодировал.

Комментарии (0)

Массивы C# имеют фиксированную длину и всегда индексируется. Идти с Моти'решения:

int [] terms = new int[400];
for(int runs = 0; runs < 400; runs++)
{
    terms[runs] = value;
}

Обратите внимание, что этот массив представляет собой плотный массив, смежные блоки 400 байт, где вы можете оставить вещи. Если вы хотите динамически изменять размер массива, использовать список&ЛТ;инт>.

List terms = new List();
for(int runs = 0; runs < 400; runs ++)
{
    terms.Add(runs);
}

Ни тип int [], ни список&л;int> есть ассоциативный массив-это словарь&ЛТ;> в C#. Как массивы и списки плотные.

Комментарии (0)
int[] terms = new int[10]; //create 10 empty index in array terms

//fill value = 400 for every index (run) in the array
//terms.Length is the total length of the array, it is equal to 10 in this case 
for (int run = 0; run < terms.Length; run++) 
{
    terms[run] = 400;
}

//print value from each of the index
for (int run = 0; run < terms.Length; run++)
{
    Console.WriteLine("Value in index {0}:\t{1}",run, terms[run]);
}

Console.ReadLine();

/*выход:

значение индекса 0: 400 <БР/>значение индекса 1: 400 <БР/>значение индекса 2: 400 <БР/>значение индекса 3: 400 <БР/>значение индекса 4: 400 <БР/>значение индекса 5: 400 <БР/>значение индекса 6: 400 <БР/>значение индекса 7: 400 <БР/>значение индекса 8: 400 <БР/>значение индекса 9: 400 <БР/>*/

Комментарии (2)

Вы можете'Т просто добавить элемент в массив легко. Вы можете установить элемент в заданную позицию как fallen888 изложил, но я рекомендую использовать список и Л;int> Уилисбор и Л;int> вместо этого, и использовать метод toArray ()`, если вам это нужно преобразовать в массив.

Комментарии (0)

Я добавлю это другой вариант. Я предпочитаю этот тип функциональной линии программирования.

Enumerable.Range(0, 400).Select(x => x).ToArray();
Комментарии (0)

Просто другой подход:

int runs = 0; 
bool batting = true; 
string scorecard;

while (batting = runs < 400)
    scorecard += "!" + runs++;

return scorecard.Split("!");
Комментарии (3)

Если вам действительно нужен массив, в следующем вероятно самое простое:

using System.Collections.Generic;

// Create a List, and it can only contain integers.
List list = new List();

for (int i = 0; i < 400; i++)
{
   list.Add(i);
}

int [] terms = list.ToArray();
Комментарии (0)

Если вы Don'т знать размер массива или уже есть массив, который вы добавляете на. Вы можете пойти об этом двумя способами. Первый-с помощью универсального список<Т>: Для этого необходимо преобразовать массив в termsList ВАР = условия.Вызова метода toList (); и использовать метод Add. Затем, когда закончите использовать термины ВАР = termsList.Метод toArray();` метод, чтобы преобразовать обратно в массив.

var terms = default(int[]);
var termsList = terms == null ? new List() : terms.ToList();

for(var i = 0; i < 400; i++)
    termsList.Add(i);

terms = termsList.ToArray();

Второй способ-изменение размера текущего массива:

var terms = default(int[]);

for(var i = 0; i < 400; i++)
{
    if(terms == null)
        terms = new int[1];
    else    
        Array.Resize(ref terms, terms.Length + 1);

    terms[terms.Length - 1] = i;
}

Если вы используете .Массив net 3.5 с.Добавить(...);

Оба эти позволят вам сделать это динамически. Если вы будете добавлять много элементов, затем просто использовать список<Т>. Если это's просто пару пунктов, то он будет иметь лучшую производительность при изменении размера массива. Это потому, что вы берете больше хита для создания `список<Т> объект.

Раз в ТИКах:

3 шт

массив размер: Время: 6

Список добавить Продолжительность: 16

400 пунктов

массив размера раз: 305

Список добавить Время: 20

Комментарии (0)
            /*arrayname is an array of 5 integer*/
            int[] arrayname = new int[5];
            int i, j;
            /*initialize elements of array arrayname*/
            for (i = 0; i < 5; i++)
            {
                arrayname[i] = i + 100;
            }
Комментарии (0)
         static void Main(string[] args)
        {
            int[] arrayname = new int[5];/*arrayname is an array of 5 integer [5] mean in array [0],[1],[2],[3],[4],[5] because array starts with zero*/
            int i, j;

          /*initialize elements of array arrayname*/
            for (i = 0; i < 5; i++)
            {
                arrayname[i] = i + 100;
            }

             /*output each array element value*/
            for (j = 0; j < 5; j++)
            {
                Console.WriteLine("Element and output value [{0}]={1}",j,arrayname[j]);
            }
            Console.ReadKey();/*Obtains the next character or function key pressed by the user.
                                The pressed key is displayed in the console window.*/
        }
Комментарии (0)
int[] terms = new int[400];

for(int runs = 0; runs < 400; runs++)
{
    terms[runs] = value;
}
Комментарии (0)