Muszę utworzyć tablicę tablic ciągów w C#. Zasadniczo chcę wykonać następujące, rodzaj hybrydy C/C#: private string[] revA = new string[] {"jeden", "dwa", "trzy&...

1
Digilee 24 czerwiec 2021, 05:23

4 odpowiedzi

Najlepsza odpowiedź

Musisz użyć Jagged Array string[][] zamiast wielowymiarowej tablicy string[,]

To źródło może podać więcej szczegółów na ten temat Dlaczego oba mamy postrzępione tablica i tablica wielowymiarowa?

3
Caius Jard 24 czerwiec 2021, 05:45
string[,] list = new string[3, 3] {{"one", "two", "three" },
                                  {"four", "five", "six" },
                                  {"seven", "eight", "nine" } };



string outStr = list[0, 0];  // outStr == "one"
1
Thomson Mixab 24 czerwiec 2021, 02:36

Może to być możliwe z ArrayList i List w C#. Wypróbowałem poniższy kod, który możesz sprawdzić i zbadać zgodnie z własnymi wymaganiami.

string[] reva = new string[] { "one", "two", "three" };
        string[] revb = new string[] { "four", "five", "six" };
        string[] revc = new string[] { "seven", "eight", "nine" };


        ArrayList arrayList = new ArrayList() { reva, revb, revc };

        List<string> nums = reva.Cast<string>().ToList();
        nums.ForEach(Console.WriteLine);
        Console.ReadLine();




        Console.ReadLine();
0
Ali G 24 czerwiec 2021, 06:58

Chociaż wspomniano o tablicach postrzępionych i wielowymiarowych, trzecią opcją jest niestandardowy typ tablicy wielowymiarowej. Coś jak

    public class My2DArray<T>
    {
        public T[] Array { get; }
        public int Width { get; }
        public int Height { get; }

        public My2DArray(int width, int height, params T[] initialItems)
        {
            Width = width;
            Height = height;
            Array = new T[width * height];
            initialItems.CopyTo(Array, 0);
        }
        public T this[int x, int y]
        {
            get => Array[y * Width + x];
            set => Array[y * Width + x] = value;
        }
    }

Ma to tę przewagę nad tablicą wielowymiarową, że wspierająca tablica jednowymiarowa jest bezpośrednio dostępna, co może być dobre dla interoperacyjności lub jeśli chcesz po prostu iterować po wszystkich elementach.

Możesz dodać konstruktory, aby zainicjować go w dowolny sposób.

0
JonasH 24 czerwiec 2021, 08:08