Probabil unul foarte simplu asta - I'm incepand cu C# și necesitatea de a adăuga valori pentru a o matrice, de exemplu:
int[] terms;
for(int runs = 0; runs < 400; runs++)
{
terms[] = runs;
}
Pentru cei care au folosit PHP, aici's ceea ce am'm încercat să fac în C#:
$arr = array();
for ($i = 0; $i < 10; $i++) {
$arr[] = $i;
}
Poti face acest fel -
int[] terms = new int[400];
for (int runs = 0; runs < 400; runs++)
{
terms[runs] = value;
}
Alternativ, puteți utiliza Liste - avantajul cu liste fiind, nu't trebuie să știți matrice de dimensiune atunci când instantierea lista.
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();
Daca're scris în C# 3, o poti face cu un one-liner:
int[] terms = Enumerable.Range(0, 400).ToArray();
Acest fragment de cod presupune că aveți o folosind directiva pentru Sistem.Linq la partea de sus a fișierului.
Pe de altă parte, dacă te're în căutarea pentru ceva care pot fi redimensionate dinamic, deoarece se pare că este cazul pentru PHP (I'am mai învățat de fapt), atunci este posibil să doriți să utilizați o Listă
List<int> terms = Enumerable.Range(0, 400).ToList();
Rețineți, totuși, că nu poți pur și simplu adăugați un 401st element de setare termeni[400] la o valoare. Te'd în schimb, aveți nevoie pentru a apela Add(), astfel:
terms.Add(1337);
Răspunsuri cu privire la modul de a face folosind o matrice sunt oferite aici.
Cu toate acestea, C# are un lucru foarte util numit Sistem.Colecții :)
Colecțiile sunt de lux alternative la utilizarea unei matrice, deși mulți dintre ei folosesc o matrice intern.
De exemplu, C# are o colecție numită Listă care funcționează foarte similar cu PHP array.
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);
}
Bazat pe răspunsul de Thracx (I nu't avea destule puncte pentru răspuns):
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;
}
Acest lucru vă permite să adăugați mai mult decât doar un element de matrice, sau trece doar o matrice ca un parametru pentru a uni două tablouri.
Folosind o Listă
Cea mai eficientă metodă este probabil alocă o nouă matrice, și apoi folosind Matrice.Copia sau Matrice.CopyTo. Acest lucru nu este greu, dacă doriți doar să adăugați un element la sfârșitul listei:
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;
}
Nu pot posta, de asemenea, codul pentru a Introduce metoda de extindere care are o destinație indicele de intrare, dacă se dorește. L's un pic mai complicat și utilizează metoda statică Matrice.Copia de 1-2 ori.
C# tablouri sunt de lungime fixă și întotdeauna indexate. Du-te cu Motti's soluție:
int [] terms = new int[400];
for(int runs = 0; runs < 400; runs++)
{
terms[runs] = value;
}
Rețineți că această matrice este o matrice densa, un bloc contiguu de 400 de bytes în cazul în care vă puteți arunca lucruri. Dacă doriți un mod dinamic de dimensiuni matrice, utilizați o Listă<int>.
List<int> terms = new List<int>();
for(int runs = 0; runs < 400; runs ++)
{
terms.Add(runs);
}
Nici int[] nici Lista<int> este un tablou asociativ ... asta ar fi un Dicționar<> in C#. Ambele tablouri și liste sunt dense.
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();
/*Ieșire:
Valoarea în indicele 0: 400
Valoarea indicelui de 1: 400
Valoarea în indicele 2: 400
Valoarea indicelui 3: 400
Valoarea în index 4: 400
Valoarea în index 5: 400
Valoarea în index 6: 400
Valoarea indicelui 7: 400
Valoarea indicelui 8: 400
Valoarea indicelui 9: 400
*/
Puteți't trebuie doar să adăugați un element la o matrice cu ușurință. Puteți seta elementul de la o anumită poziție ca fallen888 prezentate, dar vă recomandăm să utilizați o Listăîn loc, și de a folosi
ToArray()` dacă ai nevoie de ea transformată într-o matrice.
Doar o abordare diferită:
int runs = 0;
bool batting = true;
string scorecard;
while (batting = runs < 400)
scorecard += "!" + runs++;
return scorecard.Split("!");
Dacă aveți într-adevăr nevoie de o matrice următoarele este probabil cea mai simplă:
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();
Dacă tu nu't știu dimensiunea de Matrice sau au deja o serie existent pe care îl adăugați la. Puteți merge despre acest lucru în două moduri. Prima este folosind un generic Listă<T>
:
Pentru a face acest lucru, veți dori converti matrice pentru a o var termsList = termeni.ToList();
și de a folosi Add metodă. Atunci când face uz de var termeni = termsList.ToArray();
metoda de a converti înapoi la un tablou.
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();
A doua modalitate este redimensionarea matrice curent:
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;
}
Dacă utilizați .NET 3.5 Matrice.Adaugă(...);
Ambele vă va permite să facă dinamic. Dacă va fi adăugarea de o mulțime de elemente, apoi utilizați doar o Listă. Daca's doar o pereche de obiecte atunci acesta va avea o performanță mai bună redimensionarea matrice. Acest lucru este pentru că îți ia mai mult de un hit pentru crearea Lista<T>
obiect.
*** De ori în căpușe:*
3 puncte
Matrice Redimensiona Data: 6
Listă se Adaugă Data: 16
400 de obiecte
Matrice Redimensiona Timp: 305
Listă se Adaugă Data: 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.*/
}