Chciał bym zwracać tablice danych

0

Witam, mam taki problem, że utworzyłem taką klasę

class Wydarzenie
    {
        public string Przedmiot;
        public DateTime Data;
        public string [] TablicaPrzedmiotów = new string[100];
        public DateTime[] TablicaDat = new DateTime[100];
        public TimeSpan CzasDoKonca()
        {
            TimeSpan Nowa = Data - DateTime.Now;
            return (Nowa);
            
        }
        public Dane()
        {
            for(int i=0;i<-1;i++)
            {
                if (TablicaDat[i] < Data)
                {
                    TablicaPrzedmiotów[i] = Przedmiot;
                    TablicaDat[i] = Data;
                    i = -1;
                }
                
            }
        }
    } 

i chciał bym żeby** Dane()** zwracały mi te dwie tablice.

0

(int i=0;i<-1;i++)
WTF

0

Nie można zwrócić 2 tablic naraz, chyba że opakowane w jakiejś klasie.
Metoda musi mieć typ zwracany, a twoja pętla wykonuje się w nieskończoność.

1

pomijając ze ten kod to wielkie WTF, to jeśli chcesz zwrócić 2 tablice, to masz 3 możliwości

  1. nieładna - zwracasz je jako obiekt klasy Tuple<T1, T2> gdzie T1 i T2 to typy tych tablic, czyli np Tuple<string[], string[]>
  2. ładniejsza - przekazujesz do metody wcześniej utworzone tablice i na nich operujesz
  3. najładniejsza - tworzysz sobie dodatkową klasę, która w konstruktorze przyjmuje dwie tablice, na końcu Twojej metody tworzysz sobie obiekt tej klasy i go zwracasz
0
misiakufal napisał(a):

pomijając ze ten kod to wielkie WTF, to jeśli chcesz zwrócić 2 tablice, to masz 3 możliwości

  1. nieładna - zwracasz je jako obiekt klasy Tuple<T1, T2> gdzie T1 i T2 to typy tych tablic, czyli np Tuple<string[], string[]>
  2. ładniejsza - przekazujesz do metody wcześniej utworzone tablice i na nich operujesz
  3. najładniejsza - tworzysz sobie dodatkową klasę, która w konstruktorze przyjmuje dwie tablice, na końcu Twojej metody tworzysz sobie obiekt tej klasy i go zwracasz

Podejście nr 2 jest tysiąc razy brzydsze od nr 1. Wszelka mutowalność w programowaniu to zło, funkcje powinny zwracać wyniki, a nie operować na swoich argumentach.

1
void ZwróćDwieTablice(out string[] tab1, out string[] tab2)
{
    tab1 = new string[];
    tab2 = new string[];
  // ...
}

...

    string[] a,b;
    ZwróćDwieTablice(out a, out b);

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