Prawdopodobnie to bardzo proste - zaczynam od C # i muszę dodać wartości do tablicy, na przykład:
int[] terms;
for(int runs = 0; runs < 400; runs++)
{
terms[] = runs;
}
Dla tych, którzy używali PHP, oto co próbuję zrobić w C #:
$arr = array();
for ($i = 0; $i < 10; $i++) {
$arr[] = $i;
}
Odpowiedzi:
Możesz to zrobić w ten sposób -
Alternatywnie można użyć list - zaletą list jest to, że nie trzeba znać rozmiaru tablicy podczas tworzenia listy.
Edycja: a) dla pętli na liście <T> są nieco ponad 2 razy tańsze niż dla pętli foreach na liście <T>, b) zapętlanie na tablicy jest około 2 razy tańsze niż zapętlenie na liście <T>, c) zapętlenie na tablica używająca for jest 5 razy tańsza niż zapętlanie listy <T> przy użyciu foreach (co większość z nas robi).
źródło
new int[]{}
!!!!!OutOfRangeException
natychmiast po uruchomieniu kodu. Tablice muszą być inicjowane rozmiarem, którego zamierzasz użyć, rezerwują całą przestrzeń na początku, co czyni je bardzo szybkimi, ale nie można ich zmienić.Jeśli piszesz w C # 3, możesz to zrobić za pomocą jednej linijki:
W tym fragmencie kodu założono, że na początku pliku znajduje się dyrektywa w sprawie użycia System.Linq.
Z drugiej strony, jeśli szukasz czegoś, co można dynamicznie zmieniać, jak to wygląda w przypadku PHP (nigdy tak naprawdę się tego nie nauczyłem), możesz użyć Listy zamiast int [] . Oto jak wyglądałby ten kod:
Należy jednak pamiętać, że nie można po prostu dodać 401-go elementu poprzez ustawienie warunków [400] na wartość. Zamiast tego musisz wywołać Add () w następujący sposób:
źródło
Zastosowanie metody Linq Concat upraszcza to
wynik 3,4,2
źródło
Odpowiedzi na temat tego, jak to zrobić za pomocą tablicy, znajdują się tutaj.
Jednak C # ma bardzo przydatną funkcję o nazwie System.Collections :)
Kolekcje są fantazyjną alternatywą dla używania tablicy, chociaż wiele z nich używa tablicy wewnętrznie.
Na przykład C # ma kolekcję o nazwie List, która działa bardzo podobnie do tablicy PHP.
źródło
Używanie Listy jako pośrednika jest najłatwiejszym sposobem, jak to opisali inni, ale ponieważ twoje dane wejściowe są tablicą i nie chcesz po prostu przechowywać danych na Liście, przypuszczam, że możesz martwić się wydajnością.
Najbardziej wydajną metodą jest prawdopodobnie przydzielenie nowej tablicy, a następnie użycie Array.Copy lub Array.CopyTo. Nie jest to trudne, jeśli chcesz tylko dodać element na końcu listy:
W razie potrzeby mogę także kod pocztowy dla metody rozszerzenia Wstaw, która przyjmuje indeks docelowy jako dane wejściowe. Jest to trochę bardziej skomplikowane i wykorzystuje statyczną metodę Array.Copy 1-2 razy.
źródło
Na podstawie odpowiedzi Thracx (nie mam wystarczającej liczby punktów, aby odpowiedzieć):
Pozwala to dodać więcej niż jeden element do tablicy lub po prostu przekazać tablicę jako parametr, aby połączyć dwie tablice.
źródło
Najpierw musisz przydzielić tablicę:
źródło
Tak by to napisałam.
źródło
Tablice C # mają stałą długość i zawsze są indeksowane. Idź z rozwiązaniem Motti:
Zauważ, że ta tablica jest gęstą tablicą, ciągłym blokiem o długości 400 bajtów, w którym można upuścić rzeczy. Jeśli chcesz mieć tablicę o dynamicznym rozmiarze, użyj List <int>.
Ani int [], ani List <int> nie jest tablicą asocjacyjną - byłby to Słownik <> w języku C #. Zarówno tablice, jak i listy są gęste.
źródło
źródło
Nie można po prostu łatwo dodać elementu do tablicy. Możesz ustawić element w danej pozycji jako nakreślony fallen888 , ale zalecam użycie a
List<int>
lubCollection<int>
a, i użyj,ToArray()
jeśli potrzebujesz go przekonwertować na tablicę.źródło
Jeśli naprawdę potrzebujesz tablicy, to prawdopodobnie jest najprostsza:
źródło
Dodam to dla innego wariantu. Wolę bardziej tego rodzaju funkcjonalne linie kodujące.
źródło
Jeśli nie znasz rozmiaru tablicy lub masz już istniejącą tablicę, do której dodajesz. Możesz to zrobić na dwa sposoby. Pierwszym jest użycie ogólnego
List<T>
: Aby to zrobić, musisz przekonwertować tablicę na avar termsList = terms.ToList();
i użyć metody Add. Następnie po zakończeniu użyjvar terms = termsList.ToArray();
metody konwersji z powrotem na tablicę.Drugim sposobem jest zmiana rozmiaru bieżącej tablicy:
Jeśli korzystasz z .NET 3.5
Array.Add(...);
Oba z nich pozwolą ci to zrobić dynamicznie. Jeśli będziesz dodawać wiele przedmiotów, po prostu użyj
List<T>
. Jeśli to tylko kilka elementów, będzie mieć lepszą wydajność zmieniając rozmiar tablicy. Wynika to z faktu, że przy tworzeniuList<T>
obiektu bierzesz większy nacisk.Czasy w kleszczach:
3 elementy
400 pozycji
źródło
Po prostu inne podejście:
źródło
=
zamiast operatora porównania? Możesz pominąć zmienną walczącą i użyćruns < 400
do sterowania pętlą.jednym z podejść jest wypełnienie tablicy przez LINQ
jeśli chcesz wypełnić tablicę jednym elementem, możesz po prostu napisać
ponadto, jeśli chcesz wypełnić tablicę wieloma elementami, możesz użyć poprzedniego kodu w pętli
źródło
źródło
źródło
źródło
Aby dodać wartości listy do tablicy ciągów za pomocą C # bez użycia metody ToArray ()
Dane wyjściowe tablicy wartości zawierają:
jeden
dwa
trzy
cztery
pięć
źródło