Mai mult
Adăugarea de valori pentru o C# matrice
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;
}
468
18
Poti face acest fel -
Alternativ, puteți utiliza Liste - avantajul cu liste fiind, nu't trebuie să știți matrice de dimensiune atunci când instantierea lista.
Edit: a) pentru bucle pe Listă<T> sunt un pic mai mult de 2 ori mai ieftin decât foreach bucle pe Listă<T>, b) Looping pe matrice este de aproximativ 2 ori mai ieftin decât looping pe Listă<T>, c) looping pe matrice folosind pentru este de 5 ori mai ieftin decât looping pe Listă<T> folosind foreach (pe care majoritatea dintre noi).
Daca're scris în C# 3, o poti face cu un one-liner:
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ă în loc de un int[]. Aici's ce care codul ar arata ca:
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:
Folosind Linq's metoda Concat face acest lucru simplu
rezultatul 3,4,2
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.
Bazat pe răspunsul de Thracx (I nu't avea destule puncte pentru răspuns):
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ă ca un intermediar este cel mai simplu mod, ca altii au descris, dar din moment ce dvs. de intrare este o matrice și don't doar doriți să păstrați datele într-o Listă, presupun că ar putea fi preocupat de performanța.
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:
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.
Trebuie să aloce matrice prima:
Asta ar fi cum am'cod d-l.
C# tablouri sunt de lungime fixă și întotdeauna indexate. Du-te cu Motti's soluție:
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>.
Nici int[] nici Lista<int> este un tablou asociativ ... asta ar fi un Dicționar<> in C#. Ambele tablouri și liste sunt dense.
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ă "sau o" Colecție
în loc, și de a folosi
ToArray()` dacă ai nevoie de ea transformată într-o matrice.Voi adăuga asta pentru o altă variantă. Eu prefer acest tip de funcționale codificare linii mai mult.
Doar o abordare diferită:
Dacă aveți într-adevăr nevoie de o matrice următoarele este probabil cea mai simplă:
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 ovar termsList = termeni.ToList();
și de a folosi Add metodă. Atunci când face uz devar termeni = termsList.ToArray();
metoda de a converti înapoi la un tablou.A doua modalitate este redimensionarea matrice curent:
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
400 de obiecte