Start With C Sharp

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

obiektowy język programowania zaprojektowany w latach 1998-2001 przez zespół pod

kierunkiem Andersa Hejlsberga dla firmy Microsoft.

Program napisany w tym języku kompilowany jest do języka Common Intermediate


Language (CIL), specjalnego kodu pośredniego wykonywanego w środowisku
uruchomieniowym takim jak .NET Framework, .NET Core, Mono lub DotGNU. Wykonanie
skompilowanego programu przez system operacyjnybez takiego środowiska nie jest możliwe.

Nazwa[edytuj | edytuj kod]


Nazwa języka powstała analogicznie jak nazwa C++. Operator ++ w C (w C++ też) oznacza
zwiększenie o jeden, więc C++ to więcej niż C. Autorzy C# wykorzystali podobny pomysł, gdzie
symbol krzyżyka/kratki przypomina dwa połączone ze sobą operatory ++. W muzyce dźwięk C♯
jest wyższy niż dźwięk C, może to sugerować, że język jest rozwinięciem C/C++[3].

Symbol ♯ (krzyżyk) jest niedostępny na większości klawiatur, niektórych czcionkach i


przeglądarkach internetowych, dlatego zalecane jest używanie symbolu kratki (#), który bardzo
przypomina symbol muzyczny. Czasami tam gdzie ma to uzasadnienie np. w materiałach
promocyjnych, Microsoft używa nazwy C♯ zamiast C#[4].

Cechy języka[edytuj | edytuj kod]


Język C# ma wiele cech wspólnych z językami programowania Object Pascal, Delphi, C++ i Java.

•obiektowość z hierarchią o jednym elemencie nadrzędnym: podobnie jak w Javie, kod programu
jest zbiorem klas. W C# podobnie tak jak w Javie/Object Pascalu hierarchia dziedziczenia opiera
się na istnieniu jednej klasy object ( System.Object ), która stanowi element nadrzędny tej
hierarchii. W szczególności oznacza to, że również typy proste ( int , double , itd.) są strukturami z
właściwymi sobie metodami, np. int i=1; string s = i.ToString();
•odśmiecanie pamięci: zarządzaniem pamięcią zajmuje się środowisko uruchomieniowe. Oznacza
to, że nie ma potrzeby samodzielnego zajmowania się zwalnianiem pamięci po obiektach, które
przestają być używane
•właściwości, indeksery: dodatkowe elementy składowe klas
•delegaty, zdarzenia: odpowiedniki i rozwinięcie wskaźników na funkcje z C++
•refleksje i atrybuty klas: w czasie pracy programu istnieje możliwość analizy struktury kodu z
poziomu tego kodu. Umożliwia to tworzenie wysoce uniwersalnych mechanizmów operujących na
strukturze kodu nieznanej w czasie kompilacji. Mechanizm ten wykorzystywany jest m.in. w
bibliotekach ORM, narzędziach do analizy i weryfikacji kodu czy rozszerzeniach AOP. Mechanizm
atrybutów został z C# zapożyczony do języka Java w wersji 1.5 (adnotacje), jakkolwiek samo
Reflection API istniejące od pierwszego wydania języka stanowiło inspirację dla twórców C#
•typy ogólne (generics – dostępne od wersji .NET 2.0): mechanizm zbliżony swoją ogólnością
do szablonów w C++, jednak tu typ ogólny jest przenoszony do modułu binarnego i możliwy jest do
wykorzystania bez konieczności posiadania kodu źródłowego
•dynamiczne tworzenie kodu: biblioteki .NET umożliwiają dynamiczne tworzenie kodu w czasie
działania programu i włączanie go do kodu aktualnie wykonywanego. Możliwe jest zarówno
dynamiczne tworzenie kodu wykonywalnego ze źródeł C# jak i tworzenie dynamicznych modułów
w języku pośrednim (CIL).
•bogata biblioteka klas BCL, umożliwiająca rozwijanie aplikacji konsolowych, okienkowych
(System.Windows.Forms oraz WPF od .NET Framework 3.0), bazodanowych (ADO.NET),
sieciowych (System.Net), w architekturze rozproszonej (WebServices) czy dynamicznych aplikacji
internetowych (ASP.NET) oraz dynamiczne treści multimedialne (Silverlight).
•W C#, podobnie jak w C stosuje się dwa rodzaje komentarzy:
1.// to komentarz jednoliniowy, czyli wszystkiego, co znajduje się za nim, kompilator nie bierze pod
uwagę.
2.Komentarz wielowierszowy zaczyna się od /* a kończy */. Kompilator nie bierze pod uwagę tego,
co znajduje się pomiędzy.
Jeśli komentarz zaczyna się od /// lub /**, to jest to komentarz, w którym umieszcza się
dokumentację do kodu.

C# 2.0
Rozszerzenia do języka C# zostały przedstawione przez Microsoft w roku 2005 wraz z
prezentacją .NET Framework 2.0 oraz Visual Studio 2005.

Najważniejsze z rozszerzeń to:

•typy generyczne – typy te rozszerzają język C# o polimorfizm parametryczny.


Kopiec zaimplementowany przy pomocy szablonu klasy:

public class Kopiec<T>


{
private T[] tablica;

// konstruktor
public Kopiec(T[] tablica) {...}

// wstawianie nowego elementu do kopca


public void Wstaw(T elem) {...}
}

•słowo kluczowe yield .


•typy częściowe – umożliwiają rozbicie klasy, struktury lub interfejsu do wielu plików źródłowych.
Klasa częściowa wymaga użycia słowa kluczowego partial .
•metody anonimowe – pozwalają na tworzenie funkcji „w miejscu”. Funkcje takie umożliwiają
związanie kodu funkcji bezpośrednio z instancją delegata. Oznacza to, że te funkcje nie mają
nazwy i mogą być wywołane jedynie przez wywołanie delegata.
someButton.Click += delegate { MessageBox.Show("Wciśnięto przycisk"); };

•typy Nullable – to typ prosty, który łączy wartości swojego typu podstawowego z dodatkowym
oznaczeniem braku wartości (null). Typy te są tworzone przez połączenie nazwy typu prostego ze
znakiem ‘?’ np. int?, float?. Głównym zastosowaniem tych typów jest współpraca z bazami danych.
Reprezentują one wartości uzyskane z bazy danych, uwzględniając możliwość nie istnienia danej
wartości w bazie.
C# 3.0
•Słowa kluczowe " select , from , where " pozwalające na dostęp do SQL, XML, kolekcji i innych
(Language integrated query (LINQ))
•Proste inicjowanie obiektów: Klient k = new Klient(); k.Imie="Jan"; staje
się Klient k = new Klient() { Imie="Jan" };
•wyrażenia lambda : listOfFoo.Where(delegate(Foo x) { return x.size>10;}) staje
się listOfFoo.Where(x => x.size>10);
•Typy domniemane: var x = "hello"; oznacza to samo, co string x = "hello";
•Typy anonimowe: var x = new { Imie = "Jan" }
•Automatycznie generowane właściwości: public static int Liczba { get; internal set; }
•Rozszerzanie typów – dodawanie nowych metod do istniejących klas bez potrzeby ich
dziedziczenia.
C# 3.0 przedstawiono na PDC 2005. Jest obsługiwany przez środowisko Visual Studio 2008, a
jego kompilator jest częścią platformy .NET Framework 3.5.

C# 4.0
•Obsługa języków dynamicznych dzięki słowu kluczowemu dynamic .
•Obsługa kontra- i kowariancji.
•Opcjonalne słowo kluczowe ref dla wywołań metod obiektów COM.
•Parametry opcjonalne i argumenty nazwane.
Jest obsługiwany przez środowisko Visual Studio 2010, a jego kompilator jest częścią
platformy .NET Framework 4.0.

C# 5.0
Nowe elementy języka:[5][6]

•Słowa kluczowe await i async ułatwiające programowanie asynchroniczne.


•Nowy atrybut Caller Info umożliwiający uzyskanie szczegółowych informacji o wywołaniu metod.

You might also like