C# (C Sharp, wym. si-szarp, dosłownie “C-krzyżyk”, “cis”) – obiektowy język programowania zaprojektowany 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, Mono lub DotGNU. Wykonanie skompilowanego programu przez system operacyjny bez takiego środowiska nie jest możliwe.
Szukasz programisty C#? Skontaktuj się z nami lub wypełnij formularz wyceny zlecenia! Ekspresowa odpowiedź!
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ł. C# (jeśli przypomnimy, że # oznacza krzyżyk) to po polsku Cis (dźwięk stojący o pół tonu wyżej niż C). Polscy programiści używają jednak angielskiej nazwy “C Sharp”.
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ą obiektami 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 nie znanej 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 (MSIL).
* bogata biblioteka klas BCL, umożliwiająca rozwijanie aplikacji konsolowych, okienkowych (System.Windows.Forms), bazodanowych (ADO.NET), sieciowych (System.Net), w architekturze rozproszonej (WebServices) czy dynamicznych aplikacji internetowych (ASP.NET)
* W C#, podobnie jak w C stosuje się dwa rodzaje komentarzy:
Szukasz programisty C#? Skontaktuj się z nami lub wypełnij formularz wyceny zlecenia! Ekspresowa odpowiedź!
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ę pośrodku.
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.
Szukasz programisty C#? Skontaktuj się z nami lub wypełnij formularz wyceny zlecenia! Ekspresowa odpowiedź!
someButton.Click += delegate { MessageBox.Show(”Wcisnieto 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” };
* rachunek 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.
Szukasz programisty C#? Skontaktuj się z nami lub wypełnij formularz wyceny zlecenia! Ekspresowa odpowiedź!
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.
Kołobrzeg ,Ciechanów ,Wejherowo ,Dębica ,Nysa ,Kutno ,Krosno ,Starogard Gdański ,Skarżysko-Kamienna ,Skierniewice ,Radomsko ,Wodzisław Śląski ,Puławy ,Tarnobrzeg ,Legionowo ,Zawiercie,Starachowice ,Ostrołęka ,Świętochłowice ,Pruszków ,Ełk ,Racibórz ,Biała Podlaska ,Zgierz ,Będzin ,Piekary Śląskie ,Świdnica ,Tczew ,Tarnowskie Góry ,Mielec ,Bełchatów ,Żory ,Łomża ,Leszno,Stalowa Wola ,Kędzierzyn-Koźle ,Tomaszów Mazowiecki ,Zamość ,Przemyśl ,Chełm ,Głogów ,Suwałki ,Gniezno ,Pabianice ,Stargard Szczeciński ,Siemianowice Śląskie ,Ostrów Wielkopolski ,Ostrowiec Świętokrzyski ,Piła ,Mysłowice ,Lubin ,Inowrocław ,Siedlce ,Piotrków Trybunalski ,Konin ,Nowy Sącz ,Jelenia Góra ,Jastrzębie-Zdrój ,Jaworzno ,Słupsk ,Grudziądz ,Legnica ,Koszalin ,Kalisz ,Chorzów,Tarnów ,Zielona Góra ,Włocławek ,Wałbrzych ,Gorzów Wielkopolski ,Elbląg ,Opole ,Płock ,Dąbrowa Górnicza ,Tychy ,Rybnik ,Ruda Śląska ,Rzeszów ,Bielsko-Biała ,Olsztyn ,Bytom ,Zabrze ,Gliwice,Kielce ,Toruń ,Sosnowiec ,Radom ,Częstochowa ,Gdynia ,Białystok ,Katowice ,Lublin ,Bydgoszcz ,Szczecin ,Gdańsk ,Poznań ,Wrocław ,Łódź ,Kraków ,Warszawa ,