Probablement très simple, je commence avec C # et je dois ajouter des valeurs à un tableau, par exemple:
int[] terms;
for(int runs = 0; runs < 400; runs++)
{
terms[] = runs;
}
Pour ceux qui ont utilisé PHP, voici ce que j'essaie de faire en C #:
$arr = array();
for ($i = 0; $i < 10; $i++) {
$arr[] = $i;
}
Vous pouvez faire de cette façon -
int[] terms = new int[400];
for (int runs = 0; runs < 400; runs++)
{
terms[runs] = value;
}
Vous pouvez également utiliser les listes. L’avantage des listes est qu’il n’est pas nécessaire de connaître la taille du tableau lors de l’instanciation de la liste.
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();
Si vous écrivez en C # 3, vous pouvez le faire avec une seule ligne:
int[] terms = Enumerable.Range(0, 400).ToArray();
Cet extrait de code suppose que vous avez une directive using pour System.Linq en haut de votre fichier.
D'autre part, si vous cherchez quelque chose qui peut être redimensionné dynamiquement, comme il semble que ce soit le cas pour PHP (je ne l'ai jamais vraiment appris), alors vous voudrez peut-être utiliser une liste. au lieu d'un int []. Voici à quoi ressemblerait le code que:
List<int> terms = Enumerable.Range(0, 400).ToList();
Notez cependant que vous ne pouvez pas simplement ajouter un 401ème élément en définissant les termes [400] à une valeur. Vous devriez plutôt appeler Add (), comme ceci:
terms.Add(1337);
Des réponses sur la façon de le faire à l'aide d'un tableau sont fournies ici.
Cependant, C # a une chose très pratique appelée System.Collections :)
Les collections sont de fantastiques alternatives à l’utilisation d’un tableau, bien que beaucoup d’entre elles utilisent un tableau en interne.
Par exemple, C # a une collection appelée List qui fonctionne de manière très similaire au tableau 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);
}
Utiliser une liste en tant qu'intermédiaire est le moyen le plus simple, comme d'autres l'ont décrit, mais étant donné que votre entrée est un tableau et que vous ne souhaitez pas simplement conserver les données dans une liste, je suppose que vous êtes peut-être préoccupé par les performances.
La méthode la plus efficace consiste probablement à allouer un nouveau tableau, puis à utiliser Array.Copy ou Array.CopyTo. Ce n'est pas difficile si vous voulez simplement ajouter un élément à la fin de la liste:
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;
}
Je peux aussi poster du code pour une méthode d’extension Insert qui prend un index de destination en entrée, si vous le souhaitez. C'est un peu plus compliqué et utilise la méthode statique Array.Copy 1 à 2 fois.
Basé sur la réponse de Thracx (je n'ai pas assez de points pour répondre):
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;
}
Cela permet d’ajouter plus d’un élément au tableau ou simplement de passer un tableau en tant que paramètre pour joindre deux tableaux.
Vous devez d'abord allouer le tableau:
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;
}
int ArraySize = 400;
int[] terms = new int[ArraySize];
for(int runs = 0; runs < ArraySize; runs++)
{
terms[runs] = runs;
}
Ce serait comme ça que je coderais.
Les tableaux C # ont une longueur fixe et sont toujours indexés. Choisissez la solution de Motti:
int [] terms = new int[400];
for(int runs = 0; runs < 400; runs++)
{
terms[runs] = value;
}
Notez que ce tableau est un tableau dense, un bloc contigu de 400 octets où vous pouvez déposer des objets. Si vous voulez un tableau de taille dynamique, utilisez un List <int>.
List<int> terms = new List<int>();
for(int runs = 0; runs < 400; runs ++)
{
terms.Add(runs);
}
Ni int [] ni List <int> n'est un tableau associatif - ce serait un dictionnaire <> en C #. Les tableaux et les listes sont denses.
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();
/*Sortie:
Valeur en indice 0: 400
Valeur dans l'index 1: 400
Valeur dans l'index 2: 400
Valeur dans l'index 3: 400
Valeur de l'indice 4: 400
Valeur de l'indice 5: 400
Valeur de l'indice 6: 400
Valeur dans l'index 7: 400
Valeur dans l'index 8: 400
Valeur dans l'indice 9: 400
* /
Juste une approche différente:
int runs = 0;
bool batting = true;
string scorecard;
while (batting = runs < 400)
scorecard += "!" + runs++;
return scorecard.Split("!");
Vous ne pouvez pas simplement ajouter un élément à un tableau facilement. Vous pouvez définir l'élément à une position donnée comme fallen888 indiqué, mais je vous recommande d'utiliser plutôt un List<int>
ou un Collection<int>
et d'utiliser ToArray()
si vous en avez besoin. il converti en un tableau.
Si vous avez vraiment besoin d'un tableau, voici la solution la plus simple:
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();
Si vous ne connaissez pas la taille du tableau ou si vous avez déjà ajouté un tableau. Vous pouvez vous y prendre de deux manières. La première consiste à utiliser un List<T>
générique: vous devrez pour cela convertir le tableau en une var termsList = terms.ToList();
et utiliser la méthode Add. Ensuite, utilisez la méthode var terms = termsList.ToArray();
pour reconvertir en tableau.
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();
La seconde façon est de redimensionner le tableau actuel:
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;
}
Si vous utilisez .NET 3.5 Array.Add(...);
Ces deux éléments vous permettront de le faire de manière dynamique. Si vous allez ajouter beaucoup d'éléments, utilisez simplement un List<T>
. S'il ne s'agit que de quelques éléments, les performances seront redimensionnées en redimensionnant le tableau. En effet, vous prenez plus de temps pour créer l'objet List<T>
.
Times en ticks:
éléments
Durée de redimensionnement du tableau: 6
List Add Time: 16
400 articles
Durée de redimensionnement du tableau: 305
List Add Time: 20
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.*/
}
int[] terms = new int[400];
for(int runs = 0; runs < 400; runs++)
{
terms[runs] = value;
}
/*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;
}
Je vais ajouter ceci pour une autre variante. Je préfère ce type de lignes de codage fonctionnel.
Enumerable.Range(0, 400).Select(x => x).ToArray();