Наверное, очень простой - я начинаю с С# и мне нужно добавить значения в массив, например:
int[] terms;
for(int runs = 0; runs < 400; runs++)
{
terms[] = value;
}
Для тех, кто использовал PHP, вот что я пытаюсь сделать в С#:
$arr = array();
for ($i = 0; $i < 10; $i++) {
$arr[] = $i;
}
Ответ 1
Вы можете сделать это -
int[] terms = new int[400];
for (int runs = 0; runs < 400; runs++)
{
terms[runs] = value;
}
В качестве альтернативы вы можете использовать списки - преимущество при наличии списков, вам не нужно знать размер массива при создании экземпляра списка.
List<int> termsList = new List<int>();
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();
Изменить: a) для циклов в List <T> немного больше, чем в 2 раза дешевле, чем foreach в List <T> , b) Looping на массиве примерно в 2 раза дешевле, чем цикл в List <T> , c) циклический цикл с использованием для в 5 раз дешевле, чем цикл на List <T> используя foreach (что большинство из нас делает).
Ответ 2
Если вы пишете на С# 3, вы можете сделать это с помощью однострочного интерфейса:
int[] terms = Enumerable.Range(0, 400).ToArray();
Этот фрагмент кода предполагает, что у вас есть директива using для System.Linq в верхней части файла.
С другой стороны, если вы ищете что-то, что может быть динамически изменено, как это видно, это относится к PHP (я никогда не узнал об этом), тогда вы можете использовать List вместо ИНТ []. Вот как выглядит этот код:
List<int> terms = Enumerable.Range(0, 400).ToList();
Обратите внимание, однако, что вы не можете просто добавить элемент 401st, установив для параметра [400] значение. Вместо этого вам нужно будет вызвать Add(), например:
terms.Add(1337);
Ответ 3
Здесь приведены ответы на вопрос о том, как это сделать с помощью массива.
Однако С# имеет очень удобную вещь под названием System.Collections:)
Коллекции представляют собой необычные альтернативы использованию массива, хотя многие из них используют массив внутри.
Например, у С# есть коллекция под названием List, которая очень похожа на массив PHP.
using System.Collections.Generic;
// Create a List, and it can only contain integers.
List<int> list = new List<int>();
for (int i = 0; i < 400; i++)
{
list.Add(i);
}
Ответ 4
Вы должны сначала выделить массив:
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;
}
Ответ 5
int ArraySize = 400;
int[] terms = new int[ArraySize];
for(int runs = 0; runs < ArraySize; runs++)
{
terms[runs] = runs;
}
Вот как бы я это закодировал.
Ответ 6
Использование списка в качестве посредника является самым простым способом, как описано другими, но поскольку ваш ввод представляет собой массив, и вы не просто хотите хранить данные в списке, я предполагаю, что вы можете быть обеспокоены производительностью.
Самый эффективный метод - это, вероятно, распределение нового массива, а затем использование Array.Copy или Array.CopyTo. Это не сложно, если вы просто хотите добавить элемент в конец списка:
public static T[] Add<T>(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;
}
Я также могу отправить код для метода расширения Insert, который при необходимости принимает индекс назначения. Это немного сложнее и использует статический метод Array.Copy 1-2 раза.
Ответ 7
Основываясь на ответе Thracx (у меня недостаточно ответов для ответа):
public static T[] Add<T>(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;
}
Это позволяет добавить не более одного элемента в массив или просто передать массив в качестве параметра для объединения двух массивов.
Ответ 8
Массивы С# фиксированной длины и всегда индексируются. Пойдите с решением Motti:
int [] terms = new int[400];
for(int runs = 0; runs < 400; runs++)
{
terms[runs] = value;
}
Обратите внимание, что этот массив представляет собой плотный массив, непрерывный блок размером 400 байт, где вы можете отбросить вещи. Если вам нужен массив с динамическим размером, используйте List <int> .
List<int> terms = new List<int>();
for(int runs = 0; runs < 400; runs ++)
{
terms.Add(runs);
}
Ни int [], ни List <int> не является ассоциативным массивом - это будет Dictionary < > in С#. Оба массива и списки плотные.
Ответ 9
Вы не можете просто добавить элемент в массив легко. Вы можете установить элемент в заданной позиции, как указано в патче888, но я рекомендую вместо этого использовать List<int>
или Collection<int>
и использовать ToArray()
, если вам нужно преобразовать его в массив.
Ответ 10
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
*/
Ответ 11
очень простой способ
int[] array =new int[] { 3,4};
array = array.Concat(new int[] { 2 }).ToArray();
результат
3,4,2
Ответ 12
Если вам действительно нужен массив, самое простое:
using System.Collections.Generic;
// Create a List, and it can only contain integers.
List<int> list = new List<int>();
for (int i = 0; i < 400; i++)
{
list.Add(i);
}
int [] terms = list.ToArray();
Ответ 13
int[] terms = new int[400];
for(int runs = 0; runs < 400; runs++)
{
terms[runs] = value;
}
Ответ 14
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.*/
}
Ответ 15
/*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;
}
Ответ 16
int runs = 0; bool batting = true; string scorecard;
while (batting = runs < 400)
scorecard += "!" + runs++;
return scorecard.Split("!");
//Только другой подход
Ответ 17
Если вы не знаете размер массива или уже имеете существующий массив, к которому вы добавляете. Вы можете обойти это двумя способами. Первый использует общий List<T>
:
Для этого вам понадобится преобразовать массив в var termsList = terms.ToList();
и использовать метод Add. Затем, когда это делается, используйте метод var terms = termsList.ToArray();
для преобразования обратно в массив.
var terms = default(int[]);
var termsList = terms == null ? new List<int>() : 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<int>(ref terms, terms.Length + 1);
terms[terms.Length - 1] = i;
}
Если вы используете .NET 3.5 Array.Add(...);
Оба из них позволят вам делать это динамически. Если вы добавите много элементов, просто используйте List<T>
. Если это всего лишь пара элементов, тогда у нее будет лучшая производительность, изменяющая размер массива. Это происходит потому, что вы делаете больше хитов для создания объекта List<T>
.
Время в тиках:
3 элемента
Время изменения размера массива: 6
Время добавления списка: 16
400 элементов
Время изменения размера массива: 305
Время добавления списка: 20