C Sharp

Из Википедије, слободне енциклопедије

C#[1] (енгл. C sharp, изговор: /sē shärp/), повишено це или цис, један је од млађих програмских језика. Настао је 2002. године као саставни део Мајкрософтовог развојног окружења .NET Framework 1.0. На челу тима који се бавио развојем C#-а био је Андерс Хејлсберг. C# подржава више парадигми (објектно оријентисану , императивну, декларативну, генеричку) као и већина модерних виших програмских језика (C++, Java итд). Језик је опште примене и намењен је изради апликација за .NET Framework платформу.

Историјат[уреди]

У јануару 1999. Андерс Хејлсберг је основао тим за израду новог програмског језика који је требао да се зове Кул, био је идејно замишљен као програмски језик C, али објектно оријентисан. Мајкрософт је хтео да сачува првобитно име, али је због заштитног знака одустао.Џејмс Гослинг,оснивач Јаве, је за C# рекао да је он имитација Јаве. У јулу 2000. Хејлсберг је рекао да C# није "Јавин клон" и да је по дизајну ближи C++.

Верзије[уреди]

Верзија C# 1.0[уреди]

Најављена је 2000. године, а премијерно је приказана 2002. године од стране компаније Мајкрософт. Био је први програмски језик прилагођен за .NET Framework окружење.

Верзија C# 2.0[уреди]

У јулу 2003. Мајкрософт је представио спецификацију за C# 2.0 за почетак 2004. године. Ова верзија садржи неке нове могућности програмског језика, од којих је назначајније да су генерици сада параметризовани типови, много више као што су то били C++ шаблони. Они се имплементирају генерисањем по типу независног бајткода у времену превођења (компајлирања), а када се у времену извршења (енгл. run-time) шаблон први пут инстанцира за конкретан тип, тада се генерише бајткод зависан од типа. Та могућност даје високо-перформансне и много више типизиране генерике који не захтевају много изворног кода.

Верзија C# 3.0[уреди]

Вижуал Студио је 2008. добио C# верзију 3.0 која је поседовала много нових функција. То је олакшало програмерима у прављењу својих апликација. Иновације у верзији 3.0:

Верзија C# 4.0[уреди]

Први пут представљена у априлу 2010.године. Иновације у верзији 4.0:

  • Касно спајање
  • Опцони параметри

Верзија C# 5.0[уреди]

Представљена у августу 2012.године.

Верзија C# 6.0[уреди]

Представљена у јулу 2015.године.

Верзија C# 7.0[уреди]

Представљена у марту 2017.године.

Верзија C# 7.1[уреди]

Представљена у августу 2017.године.

Пример изворног кода[уреди]

Овај пример извршава се на конзоли.

using System;

namespace HelloNameSpace
{
  public class HelloWorld
  {
   static void Main()
   {
     Console.WriteLine("Zdravo, svete!");
   }
  }
}

Писање програма[уреди]

Типови података[уреди]

Типови података се могу поделити на две велике групе:

  • Вредносни типови:
    • Структуре
      • Нумерички типови
        • Интегралне(целе)
          • sbyte
          • byte
          • char
          • short
          • ushort
          • int
          • uint
          • long
          • ulong
        • Типове са покретним зарезом
          • float
          • double
        • Децималне
          • decimal
      • Логички типови
        • bool
      • Кориснички дефинисани типови
    • Енумератори
  • Референтни типови:
    • class
    • interface
    • delegate
    • object
    • string[2]

Разлика између C# и C++[уреди]

Код у језику C# је мало разумљивији од кода С++. Језик C# је сигурнији по питању доделе типа променљивим. То значи да уколико некој променљивој или неком податку доделимо одређени тип, он не може бити замењен другим типом. Постоје строга правила којих се морамо придржавати приликом конверзија типова, што у суштини значи да ћемо морати да напишемо више кода у C# него у C++-у да бисмо извршили исте задатке.Код је робуснији и једноставније је отклонити грешке, односно .NET у сваком тренутку може одредити ком типу припада тражени податак. Услед тога језик C# не омогућује наредбе као што су "узми део меморије почевши од 4. бајта унутар податка и дужине 10 бајтова и интерпретирај га као X ", што не мора увек да буде лоше. За разлику од C++, C# не подржава вишеструко наслеђивање, иако класа може имплементирати више интерфејса.

Особине језика[уреди]

Портабилност[уреди]

C# по дизајну најбоље осликава ЦЛИ (енг. Common Language Infrastructure).Спецификације језика не захтевају генерисање ЦИЛ(енг. Common Intermediate Language) или било ког другог специфичног формата, већ се може компајлирати као и традиционални програмски језици C++,Фортран и други.

Методе[уреди]

Као C++,за разлику од Јаве,C# програмери морају да користе кључну реч virtual како би из подкласе променили наслеђени метод. Методе проширења дозвољавају програмерима да користе статичке методе омогућавајући програмерима да додају методе објекту. Не постоје глобалне променљиве нити методе. Све променљиве и функције морају бити декларисане унутар класа.

Приступ меморији[уреди]

Показивачи се могу користити само у блоковима означеним са unsafe и потребна је посебна дозвола за покретање.Већини објеката се приступа путем сигурних референци који увек показују на постојеће објекте или имају јасно дефинисану нулту вредност(енг. null), немогуће је добити референцу на непостојећи објекат или на случајни блок меморије.Меморија се не ослобађа експлицитно већ то ради скупљач отпадака(енг.Garbage Collector).

Изузеци[уреди]

Изузеци у C# не постоје,за разлику од Јаве.Ово је била свесна одлука заснована на проблемима скалабилности и веродостојности.

Полиморфизам[уреди]

Не постоји вишеструко наслеђивање, тј. класа може бити потомак само једне класе. Ову одлуку донео је главни дизајнер језика како би се избегле компликације и поједноставили архитектонски захтеви током ЦЛИ-ја(енг. Common Language Infrastructure). За разлику од Јаве, C# подржава преоптерећење оператера.

Boxing i unboxing[уреди]

Boxing је операција имплицитног конвертовања променљиве у одговарајући објекат. Unboxing је операција експлицитног конвертовања објекта у вредносни тип.

Остало[уреди]

  • Из разлога енкапсулације постоји образац којим атрибутима различитих класа можемо споља приступити индиректно и то методама get и set.
  • Постоје разне конверзије (имплицитне и експлицитне) између различитих типова података (32-битни у 64-битне бројеве, int у float или string...).
  • Језик је Case sensitive, разликује мала и велика слова.


Кључне речи[уреди]

Кључне речи C# (верзија 2.0) су: abstract, as, base, bool, break, byte, case, catch, char, checked, class, const, continue, decimal, default, delegate, do, double, else, enum, event, explicit, extern, false, finally, fixed, float, for, foreach, goto, if, implicit, in, int, interface, internal, is, lock, long, namespace, new, null, object, operator, out, override, params, private, protected, public, readonly, ref, return, sbyte, sealed, short, sizeof, stackalloc, static, string, struct, switch, this, throw, true, try, typeof, uint, ulong, unchecked, unsafe, ushort, using, virtual, volatile, void и while.[3]

Извори[уреди]

Види још[уреди]

Спољашње везе[уреди]