Provavelmente é realmente simples - estou começando com C # e preciso adicionar valores a uma matriz, por exemplo:
int[] terms;
for(int runs = 0; runs < 400; runs++)
{
terms[] = runs;
}
Para quem já usou PHP, eis o que estou tentando fazer em c #:
$arr = array();
for ($i = 0; $i < 10; $i++) {
$arr[] = $i;
}
Respostas:
Você pode fazer assim -
Como alternativa, você pode usar Listas - a vantagem das listas é que você não precisa saber o tamanho da matriz ao instanciar a lista.
Edit: a) para loops na Lista <T> são um pouco mais do que 2 vezes mais baratos que foreach loops na Lista <T>, b) Looping no array é cerca de 2 vezes mais barato que o loop na Lista <T>, c) loop o array usando for é 5 vezes mais barato que o loop na Lista <T> usando foreach (o que a maioria de nós faz).
fonte
new int[]{}
!!!!!OutOfRangeException
assim que executar o código. As matrizes precisam ser inicializadas com o tamanho que você vai usar, elas reservam todo o espaço no início, o que as torna muito rápidas, mas não é possível que elas sejam redimensionadas.Se você estiver escrevendo em C # 3, poderá fazê-lo com uma única linha:
Esse trecho de código pressupõe que você tenha uma diretiva de uso para System.Linq na parte superior do seu arquivo.
Por outro lado, se você está procurando algo que possa ser redimensionado dinamicamente, como parece ser o caso do PHP (eu nunca o aprendi), convém usar uma lista em vez de um int [] . Aqui está como seria esse código:
Observe, no entanto, que você não pode simplesmente adicionar um elemento 401, definindo os termos [400] para um valor. Você precisaria chamar Add (), assim:
fonte
Usando o método Linq , o Concat simplifica
resultado 3,4,2
fonte
As respostas sobre como fazê-lo usando uma matriz são fornecidas aqui.
No entanto, o C # tem uma coisa muito útil chamada System.Collections :)
Coleções são alternativas sofisticadas ao uso de uma matriz, embora muitas delas usem uma matriz internamente.
Por exemplo, o C # tem uma coleção chamada List que funciona muito semelhante à matriz PHP.
fonte
Usar uma lista como intermediária é a maneira mais fácil, como outros descreveram, mas como sua entrada é uma matriz e você não deseja apenas manter os dados em uma lista, presumo que você possa estar preocupado com o desempenho.
O método mais eficiente é provavelmente alocar uma nova matriz e depois usar Array.Copy ou Array.CopyTo. Isso não é difícil se você deseja adicionar um item ao final da lista:
Também posso postar o código para um método de extensão Insert que usa um índice de destino como entrada, se desejado. É um pouco mais complicado e usa o método estático Array.Copy 1-2 vezes.
fonte
Com base na resposta da Thracx (não tenho pontos suficientes para responder):
Isso permite adicionar mais de um item à matriz ou apenas passar uma matriz como parâmetro para unir duas matrizes.
fonte
Você precisa alocar a matriz primeiro:
fonte
Seria assim que eu codificaria.
fonte
Matrizes C # são de comprimento fixo e sempre indexadas. Vá com a solução de Motti:
Observe que essa matriz é uma matriz densa, um bloco contíguo de 400 bytes onde você pode soltar coisas. Se você deseja uma matriz de tamanho dinâmico, use uma Lista <int>.
Nem int [] nem List <int> são uma matriz associativa - isso seria um dicionário <> em C #. Matrizes e listas são densas.
fonte
fonte
Você não pode simplesmente adicionar um elemento a uma matriz facilmente. Você pode definir o elemento em uma determinada posição, conforme descrito em " fall888" , mas eu recomendo usar um
List<int>
ou umCollection<int>
e,ToArray()
se necessário, convertê-lo em uma matriz.fonte
Se você realmente precisa de uma matriz, o seguinte é provavelmente o mais simples:
fonte
Vou adicionar isso para uma outra variante. Eu prefiro esse tipo de linhas de codificação funcionais mais.
fonte
Se você não souber o tamanho da matriz ou já tiver uma matriz existente à qual está adicionando. Você pode fazer isso de duas maneiras. A primeira é usar um genérico
List<T>
: para fazer isso, convém converter a matriz em avar termsList = terms.ToList();
e usar o método Add. Em seguida, quando terminar, use ovar terms = termsList.ToArray();
método para converter novamente em uma matriz.A segunda maneira é redimensionar a matriz atual:
Se você estiver usando o .NET 3.5
Array.Add(...);
Ambos permitem que você faça isso dinamicamente. Se você adicionar muitos itens, basta usar a
List<T>
. Se forem apenas alguns itens, o desempenho será melhor redimensionado a matriz. Isso ocorre porque você recebe mais sucesso ao criar oList<T>
objeto.Vezes em ticks:
3 itens
400 itens
fonte
Apenas uma abordagem diferente:
fonte
=
vez do operador de comparação? Você pode deixar de fora a variável de batalha e usá-laruns < 400
para controlar o loop.Uma abordagem é preencher uma matriz via LINQ
se você quiser preencher uma matriz com um elemento, basta escrever
Além disso, se você deseja preencher uma matriz com vários elementos, pode usar o código anterior em um loop
fonte
fonte
fonte
fonte
Para adicionar os valores da lista à matriz de cadeias usando C # sem usar o método ToArray ()
A saída da matriz de valores contém:
1
dois
três
quatro
cinco
fonte