troche sie rozpisalem i troche roznic sam nawet wypisalem, ale to dla
tego zeby pokazac mi o jakie roznice mi chodzi i zeby zweryfikowac
poprawnosc swojej wiedzy. takiego samego posta wysylam tez na pl.comp.lang.c
Nie szukaj związków. Poza składnią to c# nie jest następcą c++. To jest
odrębny język wywodzący się z c++. Bliżej c# do javy niż c++.
> troche szukalem i wyszperalem,
> ze w c# klasy sa alokowan na stercie, a struktury na stosie. tak samo
> lokalne typy wbudowane tez alokowane sa na stosie. nie moge natomiast
> wyszperac jak wyglada to w c++. pozatym nie calkiem wiem co w c# jest
> struktura, a co jest klasa.
Klasą jest to co zdefiniujesz przy użyciu class a strukturą przy użyciu
struct.
> wydaje mi sie, ze w c# wszystki typy
> wbudowane takie jak string czy int sa strukturami. pozatym w c#
> strutkury moga miec metody, ale nie moga dziedziczyc i byc dziedziczone,
> poza interfejsami, ktore moga byc przez nie dziedziczone.
Strukturą w c# powinno być wszystko co jest małe i powinno być szybkie.
I o ile dobrze pamiętam struktury są przekazywane przez kopiowanie a
klasy przez wskaźnik.
> w c++
> struktury nie moga posiadac wlasnych metod i nie moga dziedziczyc, chyba
> ze czegos nie doczytalem.
O ile pamiętam to w c++ struktura od klasy różni się tylko domyślnym
modyfikatorem dostępu do składowych a poza tym to samo co klasa.
> jedna z wazniejszych roznic jest to, ze w c#
> nie mozna dziedziczyc z kilku klas, ale z interfejsow juz tak.
Zgadza się.
kolejna
> sprawe ktora bym chcial wyjasnic jest preprocesow w c#. gdzies czytalem,
> ze w c# nie ma czegos takiego, ale na innej stronie znalazlem przyklady
> z #define. czy ktos sie moze interesuje jak wyglada to w c#. bo w sumie
> cos takiego jak derektywy preprocesora widzialem jedynie w kodzie
> pokazujacym ich wykorzystanie. w zadnym innym programie w c# nie
> widzialem czegos takiego (nie to zebym widzial przesanie duzo kodow w
> c#, ale w c++ uzywa sie tego w wiekszosci kodow i wcale nie mowie tu o
> include).
Tu masz więcej o dyrektywach preprocesora c#:
http://msdn.microsoft.com/en-us/library/ed8yd1ha%28VS.71%29.aspx
W c# nie napiszesz funkcji w preprocesorze tak jak to mogłeś w c++ (jak
ja tego nie lubiłem, mało czytelne).
Tu preprocesor służy na przykład do włączenie pewnych fragmentów kodu w
zależności o zdefiniowanych symboli.Czyli na przykład w wersji do
klienta wyłączasz cały kod debugujący jedną dyrektywą, na przykład
#define NO_DEBUG. A nie wycinasz mozolnie w edytorze :) o ile oczywiście
użyłeś odpowiednio #if i #endif
> kolejna sprawa ktora zauwazylem. w c# dziala mi kod:
> try
> {
> fsInput = new FileStream (szSrcFile, FileMode.Open, FileAccess.Read);
> }
> catch
> {
> Console.Write("Nie ma pliku: ");
> Console.Write(szSrcFile);
> Console.Write("\n");
> return;
> }
> w c++ taki kod nie zadziala i nie calkiem rozumiem dlaczego w c# dziala.
Tu masz więcej o wyjątkach:
http://msdn.microsoft.com/en-us/library/0yd65esw(VS.71).aspx
Twój kod zawiera błąd logiczny. Puste catch łapie wszystkie wyjątki.
Więc nie tylko brak pliku ale również brak uprawnień i inne więc nie
możesz w bloku catch założyć że plik nie istnieje.
> troche sie rozpisalem i troche roznic sam nawet wypisalem, ale to dla
> tego zeby pokazac mi o jakie roznice mi chodzi i zeby zweryfikowac
> poprawnosc swojej wiedzy. takiego samego posta wysylam tez na
> pl.comp.lang.c
Główną i największą różnicą między tymi językami jest to że c# jest
kompilowany do kodu pośredniego i dopiero w momencie uruchomienia
przekształcany na kod natywny a także to że kod c# jest kontrolowany
przez środowisko i jeśli nie ma uprawnień pewne czynności nie zostaną
wykonane.
--
Pozdrawiam
Karol
no niestety pan od pradygmatow i jezykow programowania takiej odpowiedzi
raczej nie przyjmie ;]
>> troche szukalem i wyszperalem, ze w c# klasy sa alokowan na stercie, a
>> struktury na stosie. tak samo lokalne typy wbudowane tez alokowane sa
>> na stosie. nie moge natomiast wyszperac jak wyglada to w c++. pozatym
>> nie calkiem wiem co w c# jest struktura, a co jest klasa.
>
> Klasą jest to co zdefiniujesz przy użyciu class a strukturą przy użyciu
> struct.
a typy wbudowane? sa klasami czy strukturami?
>> wydaje mi sie, ze w c# wszystki typy wbudowane takie jak string czy
>> int sa strukturami. pozatym w c# strutkury moga miec metody, ale nie
>> moga dziedziczyc i byc dziedziczone, poza interfejsami, ktore moga byc
>> przez nie dziedziczone.
>
> Strukturą w c# powinno być wszystko co jest małe i powinno być szybkie.
> I o ile dobrze pamiętam struktury są przekazywane przez kopiowanie a
> klasy przez wskaźnik.
to sie zgadza
>> w c++ struktury nie moga posiadac wlasnych metod i nie moga
>> dziedziczyc, chyba ze czegos nie doczytalem.
>
> O ile pamiętam to w c++ struktura od klasy różni się tylko domyślnym
> modyfikatorem dostępu do składowych a poza tym to samo co klasa.
tego nie wiedzialem. grebosz raczej slabo opisuje struktury w c++
>> jedna z wazniejszych roznic jest to, ze w c# nie mozna dziedziczyc z
>> kilku klas, ale z interfejsow juz tak.
>
> Zgadza się.
>
> kolejna
>> sprawe ktora bym chcial wyjasnic jest preprocesow w c#. gdzies
>> czytalem, ze w c# nie ma czegos takiego, ale na innej stronie
>> znalazlem przyklady z #define. czy ktos sie moze interesuje jak
>> wyglada to w c#. bo w sumie cos takiego jak derektywy preprocesora
>> widzialem jedynie w kodzie pokazujacym ich wykorzystanie. w zadnym
>> innym programie w c# nie widzialem czegos takiego (nie to zebym
>> widzial przesanie duzo kodow w c#, ale w c++ uzywa sie tego w
>> wiekszosci kodow i wcale nie mowie tu o include).
>
> Tu masz więcej o dyrektywach preprocesora c#:
> http://msdn.microsoft.com/en-us/library/ed8yd1ha%28VS.71%29.aspx
> W c# nie napiszesz funkcji w preprocesorze tak jak to mogłeś w c++ (jak
> ja tego nie lubiłem, mało czytelne).
ja to bardzo lubie. jak chce policzyc wartosc bezwzgledna a nie chce mi
sie bawic z math pisze mala funkcje i jest git
to tez juz wiem. calkiem ciemny z c# nie jestem ;]
--
Grzegorz Gruza
Odpowiadając usuń "spamerom_nie." z adresu!!!
Część jest strukturami część klasami.
Generalnie msdn Twoim przyjacielem:
http://msdn.microsoft.com/en-us/library/3ewxz6et%28VS.80%29.aspx
--
Pozdrawiam
Karol
różnica jest taka, że makra C++ są zupełne w sensie Turinga, tzn. można
pisać programy dla preprocesora. oznacza to w szczególności, że
a) kompilacja może trwać dowolnie długo, a nawet
b) da się pisać takie programy, które rozkładają kompilator
dyrektywy preprocesora C# to garść przełączników kompilacji, nic więcej.
Wiktor Zychla