Wątek przeniesiony 2014-08-13 16:29 z C# i .NET przez somekind.

Lista dwuwymiarowa?

0

Witam, próbuję zrobić listę typu string z dwomawymiarami lecz... nie mam pojęcia jak dodać potem tekst do takiej listy.
Zrobiłem tak:

List<string[,]> testowalista = new List<string[,]>();

Do "normalnej" listy dodaje się cos.Add("siemanko");, a tutaj?

0

Ok, mam:
List<List<string>> matrix = new List<List<string>>(); //Creates new nested List
matrix.Add(new List<string>()); //Adds new sub List
matrix[0].Add("t1"); //Add values to the sub List at index 0
matrix[0].Add("t2");

0

No tylko chyba ten sposób nie jest tkai, jaki chciałem. Chciałęm mieć cóś ala "test[0][0] i test[0][1]" a tym sposobem mogę mieć jeszcze [0][2], [0][3] itp.

1

Nie wnikam czemu tak ale możesz zrobić:

List<string[]> matrix = new List<string[]>();
matrix.Add(new string[2]);
matrix[0][0] = "1";
matrix[0][1] = "2";
matrix[0][2] = "3"; // TUTAJ SIĘ WYWALI WYJDZIESZ POZA TABLICE
0

Dobrze, a jakbym potem chciał skasować dany index to jak?
Chodzi o to, że chce mieć coś takeigo:
(matrix[0][0] to pytanie jeden, matrix[0][1] to kategoria itp)
1: "Pytanie jeden", "kategoria"
2: "pytanie dwa", "kategoria"
3: "pytanie trzy", "kategoriainna" itp
I w funkcji będę losował index, gdzie będę pobierał sobie z listy treśc pytania oraz nazwe kategori. Po wyświetleniu będę chciał usunąć ten index z listy tak, żeby po ponownym losowaniu nie było opcji, że wylosuje to, co już wcześniej wylosowałem.

1

nie lepiej zrobić sobie listę List<class> a w clasie takie pola jakie tam chcesz?

0

To ja bym to widział całkowicie inaczej stwórz klasę Kategoria i klasę Pytanie. Klasa Kategoria będzie zawierała pytania List<Pytanie> możesz dodać w konstruktorze Kategoria maksymalną liczbę pytań i nie dodawać więcej do listy niż chcesz. Do tego możesz stworzyć funkcję losującą która będzie zwracać pytanie i usuwać je od razu z listy. Ogólnie przemyśl całość jeszcze raz. ;)

0

Hmm... W klasie kategoria mam stworzyć listę List<Pytanie> a w klasie od pytń co mam zrobić?
Ogólnie tak myślałem i wymyśliłem, że lepiej chyba stworzyć liste jedną typu string, w której będzie coś ala "Trescpytania:nazwakategorii" i przy losowaniu indexu listy wyświetle tylko treśc pytania do znaku dwukropka a nazwe kategorii od dwukropka do końca po czym przy kolejnym losowaniu wywale z listy ten wcześniejszy index.

1

Ale po co tak kombinować zechcesz dodać nawet jedno pole i będziesz pół programu przerabiał. W najprostrzym przypadku ja bym widział to mniej więcej tak:

   class Category
   {
      // Pola: Kolekcja, Random, LiczbaPytań, IlePytańPozostało

      public Category(int numberOfQuestions)
      {
         // Inicjalizacja
      }

      public bool Add(Question question)
      {
        // Dodawanie i sprawdzanie czy można jeszcze dodać do kolekcji
        // Jak się udało to zwracać 'true' jak nie to 'false'
      }

      public Question GetRandomQuestion()
      {
         // Sprawdzanie czy kolekcja nie jest pusta, jak jest to rzucić jakim wyjątkiem
         // Ale zakład że cały czas wiesz ile zostało pytań w puli
         // Losowanie, usuwanie z kolekcji i zwracanie pytania
      }

      public bool TryGetRandomQuestion(out Question question)
      {
         // Podobnie jak 'public Question GetRandomQuestion()'
         // Ale nie rzuci wyjątkiem jak lista będzie pusta
      }
   }

   class Question
   {
      public string Content { get; set; }
      // Można by dodac możliwe odpowidzi
      // Czas na odpowiedź. Łatwo będzie później to rozbudować. ;)
   }
0

Oki, dzięki - przetestuje to tylko przeczytam jeszcze gdzieś co oznacza "out" przed typem parametru.
@Obiekty mam tworzyć z klasy kategorii czy pytania? Bo zawsze używałem tylko jednej własnej klasy więc troche się pogubiłem :>

1 użytkowników online, w tym zalogowanych: 0, gości: 1