Dlaczego potrzebujesz pustej tablicy? Co próbujesz zrobić?
Pan T.
7
@MrT. nie ma związku z pytaniem.
James
1
@James - może istnieje bardziej elegancki sposób robienia tego, co próbuje zrobić.
Pan T.
4
@aquanat - chociaż odpowiedź została już zaakceptowana i nie znam Twojego kodu ani logiki za nią stojącej, pokornie sugerowałbym, abyś nie zwracał pustej tablicy, ale null i sprawdzał z funkcji wywołującej, czy zwrócona wartość jest pusta lub nie. Myślę, że byłoby dużo bardziej eleganckie, czytelne i wydajne.
Pan T.
2
Powodem, dla którego nie chcesz zwracać wartości null, jest to, że konsument metody musi sprawdzić wartość null. Na przykład konsument metody może umieścić zwróconą wartość w foreach i jeśli zwracana jest pusta tablica, nie ma problemu. Jeśli jednak zostanie zwrócona wartość null, przed iteracją zwróconej wartości musi nastąpić sprawdzenie wartości null
Dziękuję wszystkim ... nie pytajcie mnie dlaczego, ale jedynym sposobem było: string [] arr = new String [0] jako string [];
aquanat
2
Metoda Atisha zadziałała i wyeliminowała narzekanie Visual Studio na używanie zmiennej, która nie jest inicjalizowana, jeśli przypiszę ją w instrukcji if
Dlaczego w przykładach ciągi są pisane wielkimi literami i nie są pisane wielką literą?
NIE jest.
1
@newStackExchangeInstance, właśnie skopiowałem kod „taki jaki jest” z pytania. Obie linie kompilują się dobrze, chociaż zgadzam się, że podążanie za jednym stylem jest lepsze.
Andrei
15
Jeśli używasz .net 4.6, mają nową składnię, której możesz użyć:
using System;// To pick up definition of the Array class.var myArray =Array.Empty<string>();
Nie ma potrzeby edytowania tej odpowiedzi, ponieważ odpowiedzi służą celowi ogólnemu, a nie konkretnemu pytaniu za powiedzenie. Odpowiada „Jaka jest składnia deklarowania i inicjowania tablicy” i jest cytatem z linku, który zamieściłem. OP może zastąpić intze stringjeśli chce.
CodeCaster
1
Twoja składnia jest nieprawidłowa.
string[] arr =newstring[5];
Spowoduje to utworzenie arr, do której odwołuje się tablica ciągów, w której znajdują się wszystkie elementy tej tablicy null. (Ponieważ ciągi są typami referencyjnymi )
Ta tablica zawiera elementy od arr[0]do arr[4]. newOperator jest wykorzystywane do tworzenia macierzy i zainicjować elementy tablicy do ich wartości domyślnych. W tym przykładzie wszystkie elementy tablicy są inicjowane null.
Odpowiedzi:
Spróbuj tego
źródło
c# Array.Empty<string>()
Twoja składnia jest nieprawidłowa:
lub
źródło
Jeśli używasz .net 4.6, mają nową składnię, której możesz użyć:
źródło
Możesz tego spróbować
źródło
Konstruktory tablic są różne. Oto kilka sposobów na utworzenie pustej tablicy ciągów:
(przepraszam, na telefonie komórkowym)
źródło
Te kręcone rzeczy są czasami trudne do zapamiętania, dlatego istnieje doskonała dokumentacja :
źródło
int
zestring
jeśli chce.Twoja składnia jest nieprawidłowa.
Spowoduje to utworzenie
arr
, do której odwołuje się tablica ciągów, w której znajdują się wszystkie elementy tej tablicynull
. (Ponieważ ciągi są typami referencyjnymi )Ta tablica zawiera elementy od
arr[0]
doarr[4]
.new
Operator jest wykorzystywane do tworzenia macierzy i zainicjować elementy tablicy do ich wartości domyślnych. W tym przykładzie wszystkie elementy tablicy są inicjowanenull
.Single-Dimensional Arrays (C# Programming Guide)
źródło
Jeśli musisz utworzyć pustą tablicę, możesz to zrobić:
Jeśli nie znasz rozmiaru, możesz również użyć
List<string>
polubieniaźródło
Poniższe powinny działać dobrze.
źródło