C Sharp
Z Wikipedii
C Sharp (C♯, C#, wym. si-szarp) jest obiektowym językiem programowania zaprojektowanym 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 .NET, Mono lub DotGNU.
Do uruchomienia programu napisanego w języku C# w systemie operacyjnym Microsoft Windows wymagane jest środowisko uruchomieniowe zwane .NET Framework dostępne za darmo na stronie Microsoftu.
Język C# ma wiele cech wspólnych z językami programowania C++ i Java.
Spis treści |
[edytuj] Nazwa
Z powodów technicznych poprawny zapis nazwy jest rzadko spotykany – nawet ze strony Microsoftu. Znak sharp ♯, czyli krzyżyk w notacji muzycznej, jest zastępowany znakiem kratki (hash, #). Spowodowane jest to brakiem znaku sharp w wielu podstawowych czcionkach i stronach kodowych oraz względna trudność przy wpisywaniu go z klawiatury.
Dlatego też specyfikacja ECMA dopuszcza zapis C# jako poprawny.
[edytuj] Cechy języka
- obiektowość z hierarchią o jednym elemencie nadrzędnym: podobnie jak w Javie, kod programu jest zbiorem klas. W przeciwieństwie do Javy jednak, w C# 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 konieczności ani potrzeby samodzielnego zajmowania się zwalnianiem pamięci po obiektach, które przestają być używane
- właściwości, indeksery, delegaty, zdarzenia: język C# pozwala definiować wiele różnych elementów składowych klas, nie tylko pola czy metody.
- refleksje i atrybuty (metaprogramowanie): 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 Javy w wersji 1.5.
- 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 (szablony w C++ to w uproszczeniu rozbudowane makrodefinicje)
- 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)
[edytuj] Przykładowe programy
W C# stosuje się dwa rodzaje komentarzy:
- // to komentarz jednoliniowy, czyli wszystkiego, co znajduje się za nim, kompilator nie bierze pod uwagę.
- 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 w postaci kodu XML.
Prosty program napisany w języku C#. Po jego skompilowaniu i uruchomieniu zobaczymy napis „Hello world!”.
using System; public class PrzykladowaKlasa { public static void Main() { Console.WriteLine("Hello world!"); } }
Kolejny przykładowy program demonstruje technikę programowania interfejsu użytkownika. Po jego skompilowaniu i uruchomieniu system operacyjny utworzy okienko aplikacji.
using System; using System.Windows.Forms; public class PrzykladoweOkno : Form { public static void Main() { Application.Run( new PrzykladoweOkno() ); } }
Przykładowe algorytmy sortowania zaimplementowane w C# znajdują się w tematach:
[edytuj] Nowości w C# 3.0
- Słowa kluczowe "
select
,from
,where
" pozwalające na dostęp do SQL, XML, kolekcji, i innych (Language integrated query (LINQ)) - Inicjalizatory obiektów:
Klient k = new Klient(); k.Imie="Jan";
staje sięKlient k = new Klient { Imie="Jan" };
- Lambda-wyrażenia :
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, costring x = "hello";
- Typy anonimowe:
var x = new { Imie = "Jan" }
- Rozszerzanie typów - dodawanie nowych metod do istniejących klas bez potrzeby ich dziedziczenia.
C# 3.0 przedstawiono na PDC 2005, wersja Preview jest dostępna na stronach MSDN.
[edytuj] Zobacz też
[edytuj] Linki zewnętrzne
- Specyfikacja EMCA-334 C# Language (.pdf)
- C# Online.NET
- strona domowa projektu Mono – wolnej implementacji C# i .NET
- Strona o programowaniu w C# .NET (Kurs C#.NET on-line)
- Monodevelop – środowisko programistyczne napisane w C# i GTK+
- Wiele kodów źródłowych aplikacji napisanych w technologii .NET
- Również kody źródłowe
ABAP • Ada • AWK • Asembler • C • C++ • C# • COBOL • D • Forth • Fortran • Icon • Java • JavaScript • Lisp • Modula 2 • Oberon • Object Pascal • Objective-C • Pascal • Perl • PHP • PL/SQL • Python • REXX • Ruby • sh • Smalltalk • Snobol • SQL • Visual Basic • VB.NET
Akademickie
Comal • Eiffel • Haskell • Logo • MCPL • ML • Nemerle • Prolog • Scheme
Historyczne
ALGOL • APL • BASIC • Clipper • MUMPS • PLAN • PL/I • PL/M • SAS • Simula