-
Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: "Wojciech \"Spook\" Sura" <spook"mad@hatter"op.pl>
Newsgroups: pl.comp.programming
Subject: Re: c++ -> c#
Date: Mon, 24 Oct 2011 15:59:21 +0200
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 249
Message-ID: <op.v3uzs7ew8x7o78@notebook>
References: <j836ta$efc$1@inews.gazeta.pl>
NNTP-Posting-Host: dynamic-78-9-130-238.ssp.dialog.net.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-2; format=flowed; delsp=yes
Content-Transfer-Encoding: Quoted-Printable
X-Trace: inews.gazeta.pl 1319464760 15130 78.9.130.238 (24 Oct 2011 13:59:20 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Mon, 24 Oct 2011 13:59:20 +0000 (UTC)
X-User: spoko_ws
X-Antivirus: avast! (VPS 111024-1, 2011-10-24), Outbound message
X-Antivirus-Status: Clean
User-Agent: Opera Mail/11.52 (Win32)
Xref: news-archive.icm.edu.pl pl.comp.programming:193106
[ ukryj nagłówki ]Dnia 24-10-2011 o 10:16:42 Sarr. <s...@g...pl> napisał(a):
> witam,
>
> mam luzne pytanie do tych, ktorzy doswiadczyli przejscia jak w temacie,
> czyli z c++ na c#. nie zrozumcie mnie zle, chodzi mi o to, zeby rzucac
> c++ na rzecz c#.
>
> chodzi mi o opinie o tym co w c# jest 'lepsze' a co 'gorsze', przy czym
> podkreslam, chodzi mi o subiektywne opinie i konkretne przyklady a nie
> generalizacje. co sie bardziej podoba, a co mniej. w czym c# ulatwia
> zycie a z czym w c# trzeba sie meczyc. co moze sprawic, ze dostajac nowe
> zadanie do rozwiazania wybierzecie wlasnie c#, i druga strona medalu, do
> jakich zastosowan c# nie wybralibyscie nigdy w zyciu.
Nigdy nie przechodziłem z C++ na C# w ścisłym sensie. IMO oba języki
dobrze się uzupełniają.
No to ciekawszych rzeczy:
* Automatyczne zarządzanie pamięcią. Nie ma czegoś takiego jak delete,
manager pamięci sam decyduje o tym, kiedy zwalniać pamięć (i zdarza się
czasami, że wychodzi mu to lepiej niż w programie napisanym w C++). Trzeba
natomiast pamiętać o zwalnianiu zasobów natywnych.
* Własności w klasach. Szkoda tylko, że wzorowali się na C++, a nie na
Delphi i nie można tworzyć indeksowanych własności. Analogiczny kod:
<C++>
class MyClass
{
public:
int GetValue(int index);
void SetValue(int index, const int value);
int GetValue2(int index);
void SetValue2(int index, const int value);
};
// Implementacje
// Użycie:
myClass.SetValue(5, 5);
</C++>
<C#>
public class ValueClass
{
public int this[int index]
{
get
{
// Implementacja
}
set
{
// Implementacja
}
}
}
public class Value2Class
{
public int this[int index]
{
get
{
// Implementacja
}
set
{
// Implementacja
}
}
}
public class MyClass
{
private ValueClass _valueClass;
private Value2Class _valueClass;
public ValueClass Value
{
get
{
return _valueClass;
}
}
public Value2Class Value2
{
get
{
return _value2Class;
}
}
}
// Użycie:
myClass.Value[5] = 5;
</C#>
<Delphi>
type TMyClass = class(TObject)
protected
function GetValue(index : integer) : integer;
procedure SetValue(index : integer; const newValue : integer);
function GetValue2(index : integer) : integer;
procedure SetValue2(index : integer; const newValue : integer);
public
property Value[index : integer] : integer read GetValue write SetValue;
property Value2[index : integer] : integer read GetValue2 write
SetValue2;
end;
// Implementacje
// Użycie:
myClass.Value[5] := 5;
</Delphi>
* Zdarzenia wbudowane w język. Nareszcie.
* Gotowce, gotowce, gotowce. W bibliotekach standardowych jest opakowane
prawie wszystko, co można chcieć zrobić z Windowsem. Sieć, rejestr,
rysowanie, wyrażenia regularne, dostęp do systemu plików, przetwarzanie
tekstu, XML. Tona gotowych generycznych struktur danych.
* Kolejność kompilacji plików nie gra roli, liczą się tylko namespace'y.
<Plik1.cs>
namespace MyNamespace
{
public class A
{
private B _b;
}
}
</Plik1.cs>
<Plik2.cs>
namespace MyNamespace
{
public class B
{
private A _a;
}
}
</Plik2.cs>
* Refleksje, czyli bardzo mocno rozbudowane RTTI. Nic się nie schowa,
jeśli ktoś się uprze, to może swobodnie rzeźbić po prywatnych polach klas.
Enumerować członków klas, łącznie z metodami i własnościami.
* Atrybuty (które można przypiąć do czegokolwiek). Przydają się w
niektórych sytuacjach, na przykład:
<C#>
public enum Colors
{
[MyAttribute(R=255, G=0, B=0)]
Red,
[MyAttribute(R=0, G=255, B=0)]
Green,
[MyAttribute(R=0, G=0, B=255)]
Blue
}
</C#>
Ciekawostka - Delphi w najnowszej wersji obsługuje również atrybuty (i
kompiluje do kodu natywnego); C++ niestety nie :)
* Typy generyczne bez refleksji nadają się tylko do konstruowania
kontenerów danych (na przykład nie można - jak w C++ - "na wiarę" zawołać
metody obiektu, którego typ jest określany podczas instancjonowania typu
generycznego)
Tyle z pamięci. Zachęcam do zapoznania się z językiem, jest bardzo ciekawy.
> pozdrawiam,
> Marcin.
Pozdrawiam -- Spook.
--
! ._______. Warning: Lucida Console sig! //) !
! || spk || www.spook.freshsite.pl / _ """*!
! ||_____|| spook at op.pl / ' | ""!
! | ___ | tlen: spoko_ws gg:1290136 /. __/"\ '!
! |_|[]_|_| May the SOURCE be with you! \/) \ !
Następne wpisy z tego wątku
- 24.10.11 15:35 Lelek@
- 24.10.11 15:55 Adam Przybyla
- 24.10.11 16:28 Robert Winkler
- 24.10.11 17:20 A.L.
- 24.10.11 18:40 Adam Przybyla
- 25.10.11 12:31 Sarr.
- 25.10.11 12:54 Robert Winkler
- 25.10.11 13:54 R. P.
- 25.10.11 17:36 Wojciech \"Spook\" Sura
- 26.10.11 04:59 Jacek Czerwinski
- 26.10.11 05:20 Adam Przybyla
- 26.10.11 05:53 Jacek Czerwinski
- 26.10.11 06:07 Adam Przybyla
- 26.10.11 08:05 Sarr.
Najnowsze wątki z tej grupy
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Re: Najgorszy język programowania
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
Najnowsze wątki
- 2025-12-24 Felgi
- 2025-12-24 2,5 x więcej niż Li-Ion
- 2025-12-24 No i kolejny ograniczony
- 2025-12-24 Warszawa => Młodszy Specjalista ds. wsparcia sprzedaży <=
- 2025-12-24 New York Times zagrożeniem bezpieczeństwa narodowego USA - POTUS D. Trump
- 2025-12-24 Podżeganie?
- 2025-12-24 => Senior Algorithm Developer (Java/Kotlin) <=
- 2025-12-24 otwarcie drugiej obwodnicy Trójmiasta
- 2025-12-24 Tfu! Przeklety prostokąt (czyli UPS i "sinus modyfikowany")
- 2025-12-23 Prezent dla kierowców od prezydenta Nawrockiego
- 2025-12-23 Warszawa => Asystent ds. Sprzedaży i Rozwoju Klienta <=
- 2025-12-23 Warszawa => Senior IT Recruitment Consultant <=
- 2025-12-22 czy wiedziałeś że?
- 2025-12-22 Unijne KOOOORWY mówią że WYCOFUJĄ się z zakazu rejestracji elektryków
- 2025-12-22 Białystok => ERP Microsoft Dynamics 365 Commerce Consultant <=




7 pułapek i okazji - zobacz co cię czeka podczas kupna mieszkania na wynajem