Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C#] Implementacja stosu(dynamicznych struktur danych)

Ostatnio zmodyfikowano 2013-07-21 17:44
Autor Wiadomość
m4tx
» 2013-07-20 23:22:50
@m4tx Typy elementarne są przekazywane przez wartość
Właśnie to starałem się przekazać.

Może już skończymy ten OT? :)
P-88463
Mrovqa
» 2013-07-21 00:03:30
@m4tx czasem Ciebie w ogóle nie rozumiem. Czy ja gdziekolwiek pisałem, że typy elementarne są przekazywane inaczej niż przez wartość? Jeszcze do tego zamieściłeś to jako odpowiedź na to, że referencja to wskaźnik. To ty offtopujesz zbędnymi i nic nie wnoszącymi argumentami. Powiedz mi jaki jest sens argumentu "Bez pomocy wskaźnika i nie mogąc używać referencji, nie zmodyfikujesz przesłanej do funkcji zmiennej"? To tak jakby powiedzieć "Bez pomocy struktur w C++ (chodzi o słówko kluczowe) ciężko byłoby napisać większy projekt nie mogąc używać klas". Bezsens. Po co się ograniczać? Poza tym referencja - jak już mówiłem - spokojnie może służyć jako wskaźnik. Jak niby działa, skoro przechowuje adres obiektu, który wskazuje? Referencja w C# jest bardziej podobna do wskaźnika z C++ niż referencji. Proszę Cię - przestań używać takich bezsensownych argumentów - nic nie wnoszą do dyskusji, a tylko ją zaśmiecają.
P-88467
m4tx
» 2013-07-21 10:14:24
Czy ja gdziekolwiek pisałem, że typy elementarne są przekazywane inaczej niż przez wartość?
Nie, ale twierdzisz, że wskaźniki nie są potrzebne. A referencja akurat dość mocno różni się od wskaźnika w C# (niemniej jednak, tak jak napisałeś, za pomocą słów kluczowych
ref
 lub
out
 można też zrobić to, o czym napisałem 2 posty wstecz).

Referencja w C# jest bardziej podobna do wskaźnika z C++ niż referencji.
Niezbyt... Referencja w C# wcale nie musi mieć adresu obiektu, na który wskazuje. Referencja tym różni się od wskaźnika w C#, że obiekt, na który wskazuje referencja, może być swobodnie przemieszczany w pamięci (podobnie zresztą jest w Javie). Wskaźnik niestety nie jest już taki fajny. Wskaźnik bowiem dopiero wskazuje na konkretny adres - jak obiekt zostanie przemieszczony, to wskaźnik zwyczajnie przestanie działać. Referencja nie.
P-88476
Mrovqa
» 2013-07-21 15:29:53
Znowu piszesz miejscami bezsensownie...

Nie, ale twierdzisz, że wskaźniki nie są potrzebne. A referencja akurat dość mocno różni się od wskaźnika w C# (niemniej jednak, tak jak napisałeś, za pomocą słów kluczowych ref lub out można też zrobić to, o czym napisałem 2 posty wstecz).
Piszę o jednym, a ty zamiast na to odpowiedzieć to zaczynasz dyskusję o czymś zupełnie innym. Wskaż mi miejsce gdzie porównuję referencję w C# do wskaźnika w C#. Nie przypominam sobie, bym o tym pisał. I znów "Twierdzisz, że wskaźniki są niepotrzebne, ale referencja różni się od wskaźnika"... Gdzie tu jest sens?

Niezbyt... Referencja w C# wcale nie musi mieć adresu obiektu, na który wskazuje. Referencja tym różni się od wskaźnika w C#, że obiekt, na który wskazuje referencja, może być swobodnie przemieszczany w pamięci (podobnie zresztą jest w Javie). Wskaźnik niestety nie jest już taki fajny. Wskaźnik bowiem dopiero wskazuje na konkretny adres - jak obiekt zostanie przemieszczony, to wskaźnik zwyczajnie przestanie działać. Referencja nie.
Jeżeli referencja nie przechowuje adresu obiektu (a takowy obiekt jest tworzony na stercie), to jak się do niego odwoła ta referencja? Myślisz, że ja sądzę, iż VMka C# jest na tyle głupia, by nie aktualizować adresu obiektu, gdy go zechce przenieść? To jest oczywiste. I referencja w C# korzysta z C/C++'owego wskaźnika (tj. adresu obiektu na stercie). Żeby rozchwiać Twoje wątpliwości powtórzę jeszcze raz: nigdzie nie pisałem o korzystaniu ze wskaźników w C#. To ty je chciałeś wcisnąć do swojego przykładu, a potem jeszcze napisałeś jakie to nierozważne w przypadku przeniesienia obiektu w pamięci przez VMkę, "ale nie - referencja jest lepsza, ale nie możesz jej używać, więc wykorzystaj wskaźnik" (nawiązując do Twojego bezsensownego przykładu, gdzie to chcesz ograniczać funkcjonalność języka). Ja cały czas polecam referencje. Masz jeszcze coś do dodania poza kolejnymi wypowiedziami nie na temat? Jeśli nie, to już skończ. Autorowi tego tematu to już raczej nie jest potrzebne.
P-88487
m4tx
» 2013-07-21 16:05:39
Wskaż mi miejsce gdzie porównuję referencję w C# do wskaźnika w C#.
Z racji, że wskaźniki w C# i C++ są w gruncie rzeczy identyczne to proszę bardzo:
Referencja w C# jest bardziej podobna do wskaźnika z C++ niż referencji.

Piszę o jednym, a ty zamiast na to odpowiedzieć to zaczynasz dyskusję o czymś zupełnie innym.
Przeczytaj jeszcze raz cały temat, a jak dalej tak będziesz sądził, to zrób to jeszcze raz...

Jeżeli referencja nie przechowuje adresu obiektu (a takowy obiekt jest tworzony na stercie), to jak się do niego odwoła ta referencja?
Na podstawie id obiektu... To, że jest tworzony na stercie nie oznacza, że jest tworzony w taki sam sposób, jak  w C++.

Masz jeszcze coś do dodania poza kolejnymi wypowiedziami nie na temat? Jeśli nie, to już skończ. Autorowi tego tematu to już raczej nie jest potrzebne.
I mówi to ten, co sam wywołał tę dyskusję... :)

A, Ty dałeś link do stackoverflow żeby Twoja wypowiedź wyglądała wiarygodniej to ja też dam, o.
http://stackoverflow.com​/questions/430112​/what-is-the-difference-between-a-c-sharp-reference-and-a-pointer

VMka C#
Prędzej VM-kę .NET.
P-88488
Mrovqa
» 2013-07-21 17:44:16
Eh, opisałem się jak głupi i post się nie dodał... W skrócie:

Z racji, że wskaźniki w C# i C++ są w gruncie rzeczy identyczne to proszę bardzo:
C++ != C#, więc wskazałeś nie to, o co prosiłem.

Przeczytaj jeszcze raz cały temat, a jak dalej tak będziesz sądził, to zrób to jeszcze raz...
Przeczytaj zacytowane przez siebie pytanie i odpowiedź. Tylko pierwszy wyraz jest na temat, reszta, która jest powtórzeniem mojego stwierdzenia i napisanie rzeczy oczywistych, już nie.

Na podstawie id obiektu... To, że jest tworzony na stercie nie oznacza, że jest tworzony w taki sam sposób, jak  w C++.
ID obiektu i tak musi zostać przemapowane na adres, który VMka edytuje. Jakby nie patrzeć ID jest swoistym rodzajem adresu.

I mówi to ten, co sam wywołał tę dyskusję... :)
Kolejna wypowiedź nie na temat. Ja tylko błędnie stwierdziłem, iż w C# nie ma wskaźników. Ty na poprawieniu błędy nie przestałeś i musiałeś podać ten twój przykład. Można też pójść w drugą stronę i stwierdzić, iż tę dyskusję rozpoczął autor.

A, Ty dałeś link do stackoverflow żeby Twoja wypowiedź wyglądała wiarygodniej to ja też dam, o.
Kolejny dowód na to, iż nie czytasz dokładnie moich postów, mimo tego, iż już Ci to podkreślałem. Ja nigdzie nie porównywałem wskaźników i referencji w C#. Ty to zrobiłeś. Ja po prostu napisałem, że referencja jakoś musi zdobyć adres (niekoniecznie wskaźnik) obiektu. Ile razy trzeba Ci to powtórzyć, byś zrozumiał?

Prędzej VM-kę .NET.
Ona też i nie ukrywam, iż o nią mi pierwotnie chodziło, jednakże nie zapominaj o interpreterach C# (nawet jeśli wrappują VMkę .NETa). C# jest przecież używany do pisania skryptów, np. w Unity.

Dobra, ja już kończę swój udział w tym temacie. Rośnie tylko zbędny offtop (powtarzam Ci to samo w kółko), a swoją drogą nie chce mi się pisać tu więcej postów (ten post to dużo szczuplejsza wersja tego co było pierwotnie, ale niestety się nie dodało, a tylko usunęło...). Cel zrealizowałem - pomogłem autorowi, to mi wystarczy. Jak chcesz porozmawiać to zapraszam na GG. Chętnie dowiem się czegoś nowego jeśli masz coś ciekawego do powiedzenia :)
P-88491
1 « 2 »
Poprzednia strona Strona 2 z 2