Chciał bym zwracać tablice danych

Odpowiedz Nowy wątek
2014-12-19 18:32
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.

Pozostało 580 znaków

2014-12-19 18:42
Krwawy Kaczor
0

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

Pozostało 580 znaków

2014-12-19 19:10
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ść.

Pozostało 580 znaków

2014-12-19 19:14
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
@Adam Boduch Adamie, wykryłem problem z parserem :) w treści wątku jest nieładna - zwracasz je jako obiekt klasy Tuple&lt;t1, t2=&quot;T2&quot;&gt; gdzie T1 i T2 to typy tych tablic, czyli np Tuple&lt;string[], string[]=&quot;string[]&quot;&gt; a w edytorze nieładna - zwracasz je jako obiekt klasy Tuple&lt;T1, T2&gt; gdzie T1 i T2 to typy tych tablic, czyli np Tuple&lt;string[], string[]&gt; - misiakufal 2014-12-19 19:18
Dzięki. Informacja została już zgłoszona tutaj: http://4programmers.net/Forum/Coyote/174866-nieznane_tagi - Adam Boduch 2014-12-20 07:53
A co takiego nieładnego jest w zwracaniu Tuple ? - W2K 2014-12-21 20:08

Pozostało 580 znaków

2014-12-21 02:31
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.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2014-12-21 11:43
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);
No to jest właśnie c****, niczego nie zwracasz tylko modyfikujesz argumenty. - somekind 2014-12-21 17:26
co widać w miejscu wywołania, gdzie trzeba użyć out. od "zwracania" to się różni tylko kwestią innego zapisu. - Azarien 2014-12-21 20:20
Kwestią słabego stylu. Mutowalność powoduje błędy. - somekind 2014-12-21 21:32
ale tu nie ma mutowalności. tablica jest tworzona raz i przypisywana do zmiennej raz. - Azarien 2014-12-21 21:46

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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