Знаймо

Додати знання

приховати рекламу

Цей текст може містити помилки.

C Sharp



План:


Введення

Правильний заголовок цієї статті - C # . Він показаний некоректно через технічні обмеження.

C # (вимовляється Сі шарп) - об'єктно-орієнтована мова програмування. Розроблено в 1998 - 2001 роках групою інженерів під керівництвом Андерса Хейлсберга в компанії Microsoft як мова розробки додатків для платформи Microsoft. NET Framework і згодом був стандартизований як ECMA -334 і ISO / IEC 23270.

C # відноситься до родини мов з C-подібним синтаксисом, з них його синтаксис найбільш близький до C + + і Java. Мова має статичну типізацію, підтримує поліморфізм, перевантаження операторів (у тому числі операторів явного і неявного приведення типу), делегати, атрибути, події, властивості, узагальнені типи і методи, ітератори, анонімні функції з підтримкою замикань, LINQ, винятку, коментарі у форматі XML.

Перейнявши багато що від своїх попередників - мов C + +, Java, Delphi, Модула і Smalltalk - С #, спираючись на практику їх використання, виключає деякі моделі, що зарекомендували себе як проблематичні при розробці програмних систем, наприклад, C # не підтримує множинне спадкування класів (на відміну від C + +).


1. Особливості мови

C # розроблявся як мова програмування прикладного рівня для CLR і, як такий, залежить, насамперед, від можливостей самої CLR. Це стосується, перш за все, системи типів C #, яка відображає BCL. Присутність або відсутність тих чи інших виразних особливостей мови диктується тим, чи може конкретна мовна особливість бути транслювала у відповідні конструкції CLR. Так, з розвитком CLR від версії 1.1 до 2.0 значно збагатився і сам C #; подібної взаємодії слід чекати і надалі. (Проте ця закономірність була порушена з виходом C # 3.0, що представляє собою розширення мови, не спираються на розширення платформи. NET.) CLR надає C #, як і всім іншим . NET -орієнтованим мовам, багато можливостей, яких позбавлені класичні мови програмування. Наприклад, збірка сміття не реалізована в самому C #, а проводиться CLR для програм, написаних на C # точно так само, як це робиться для програм на VB.NET, J # та ін


2. Назва мови

Нота з дієз.

Назва "Сі шарп" ( До дієз) походить від музичної нотації, де знак дієз, додаються до основної позначенню ноти, означає підвищення відповідного цій ноті звуку на півтон. [4] Це аналогічно назвою мови C + +, де "+ +" означає, що змінна повинна бути збільшена на 1.

Внаслідок технічних обмежень на відображення (стандартні шрифти, браузери і т. д.) і тієї обставини, що знак дієз ♯ не представлений на стандартній клавіатурі, знак номера # був обраний для представлення знака дієз при записі імені мови програмування. [5] Ця угода відображено в Специфікації Мови C # ECMA-334. [6] Проте, на практиці (наприклад, при розміщенні реклами та коробковому дизайні [7]), Майкрософт використовує призначений музичний знак.

Назви мов програмування не прийнято перекладати, тому часто мову називають по-англійськи "Сі шарп".


3. Стандартизація

C # стандартизований в ECMA (ECMA-334) [8] і ISO (ISO / IEC 23270) [9].

Відомо, як мінімум, про три незалежних реалізаціях C #, що базуються на цій специфікації і знаходяться в даний час на різних стадіях розробки:


4. Версії

Протягом розробки мови C # було випущено декілька його версій:

Версія Специфікація мови Дата . NET Framework Visual Studio
ECMA ISO / IEC Microsoft
C # 1.0 Грудень 2002 Квітень 2003 Січень 2002 Січень 2002 . NET Framework 1.0 Visual Studio. NET 2002
C # 1.2 Жовтень 2003 Квітень 2003 . NET Framework 1.1 Visual Studio. NET 2003
C # 2.0 Червень 2006 Вересень 2006 Вересень 2005 [10] Листопад 2005 . NET Framework 2.0 Visual Studio 2005
C # 3.0 Відсутня [11] Серпень 2007 Листопад 2007 . NET Framework 3.5 Visual Studio 2008
C # 4.0 Квітень 2010 Квітень 2010 . NET Framework 4 Visual Studio 2010
Загальна інформація за версіями
C # 2.0 C # 3.0 C # 4.0 C # 5.0 (запланований)
Нові
можливості
  • Узагальнення
  • Змішані типи
  • Анонімні методи
  • Ітератори
  • Нуль-типи
  • Неявно тіпізіруемие локальні змінні
  • Ініціалізатор об'єктів і колекцій
  • Автоматична реалізація властивостей
  • Анонімні типи
  • Методи-розширювачі
  • Запити
  • Лямбда-вирази
  • Дерева виразів
  • Динамічне зв'язування
  • Іменовані і додаткові аргументи
  • Узагальнена ковариантности і контрваріантность
  • Асинхронні методи
  • Компілятор як служба

4.1. Версія 1.0

Проект C # був початий у грудні 1998 і отримав кодову назву COOL (C-style Object Oriented Language). Версія 1.0 була анонсована разом з платформою. NET у червні 2000, тоді ж з'явилася і перша загальнодоступна бета-версія; C # 1.0 остаточно вийшов разом з Microsoft Visual Studio. NET у лютому 2002.

Перша версія C # нагадувала за своїми можливостями Java 1.4, дещо їх розширюючи: так, в C # були властивості (що виглядають в коді як поля об'єкта, але на ділі викликають при зверненні до них методи класу), індексатори (подібні до властивостей, але що приймають параметр як індекс масиву), події, делегати, цикли foreach, структури, що передаються за значенням, автоматичне перетворення вбудованих типів в об'єкти при необхідності (boxing), атрибути, вбудовані засоби взаємодії з некерованим кодом ( DLL, COM) та інше.

Крім того, в C # вирішено було перенести деякі можливості C + +, відсутні в Java: беззнакові типи, перевантаження операторів (з деякими обмеженнями, на відміну від C + +), передача параметрів в метод по посиланням, методи із змінним числом параметрів, оператор goto goto (з обмеженнями). Також в C # залишили обмежену можливість роботи з покажчиками - в місцях коду, спеціально позначених словом unsafe і при вказівці спеціальній опції компілятору.


4.2. Версія 2.0

Проект специфікації C # 2.0 вперше був опублікований Microsoft в жовтні 2003; в 2004 виходили бета-версії (проект з кодовою назвою Whidbey), C # 2.0 остаточно вийшов 7 листопада 2005 року разом з Visual Studio 2005 і. NET 2.0.

Нові можливості у версії 2.0
  • Часткові типи (розділення реалізації класу більш ніж на один файл).
  • Узагальнені, або параметризрвані типи (generics). На відміну від шаблонів C + +, вони підтримують деякі додаткові можливості і працюють на рівні віртуальної машини. Разом з тим, параметрами узагальненого типу не можуть бути вирази, вони не можуть бути повністю або частково спеціалізовані, не підтримують шаблонних параметрів за замовчуванням, від шаблонного параметра можна успадковуватися, і т. д. [12]
  • Нова форма ітератора, що дозволяє створювати сопрограмми за допомогою ключового слова yield, подібно Python і Ruby.
  • Анонімні методи, що забезпечують функціональність замикання.
  • Оператор'??': return obj1 ?? obj2; return obj1 ?? obj2; означає (у нотації C # 1.0) return obj1!=null ? obj1 : obj2; return obj1!=null ? obj1 : obj2;.
  • Обнуляємо ('nullable') типи-значення (що позначаються знаком питання, наприклад, int? i = null;), що представляють собою ті ж самі типи-значення, здатні приймати також значення null. Такі типи дозволяють поліпшити взаємодію з базами даних через мову SQL.
  • Можливість створювати збережені процедури, тригери і навіть типи даних на. Net мовах (у тому числі і на C #).
  • Підтримка 64-розрядних обчислень, що крім усього іншого, дозволяє збільшити адресний простір і використовувати 64-розрядні примітивні типи даних.

4.3. Версія 3.0

У червні 2004 року Андерс Хейлсберг вперше розповів на сайті Microsoft про плановані розширення мови в C # 3.0. [13] У вересні 2005 року вийшли проект специфікації C # 3.0 і бета-версія C # 3.0, що встановлюється у вигляді доповнення до існуючих Visual Studio 2005 і. NET 2.0. Остаточно ця версія мови увійшла в Visual Studio 2008 і. NET 3.5.

Нові можливості у версії 3.0

У C # 3.0 з'явилися наступні радикальні додавання до мови:

  • ключові слова select, from, where, що дозволяють робити запити з SQL, XML, колекцій і т. п. (Запит, інтегрований в мову, Language Integrated Query, або LINQ)
  • Ініціалізація об'єкту разом з його властивостями:
 Customer c  =  new  Customer  (  )  ;  c  .  Name  =  "James"  ;  c  .  Age  =  30  ; 
можна записати як
 Customer c  =  new  Customer  {  Name  =  "James"  , Age  =  30  }  ; 
 listOfFoo  .  Where  (  delegate  (  Foo x  )  {  return  x  .  size  >  10  ;  }  )  ; 
тепер можна записати як
 listOfFoo  .  Where  (  x  =>  x  .  size  >  10  )  ; 
  • Дерева виразів:
лямбда-виразу тепер можуть представлятися у вигляді структури даних, доступної для обходу під час виконання, тим самим дозволяючи транслювати суворо типізовані C #-висловлювання на інші домени (наприклад, вирази SQL).
  • Висновок типів локальної змінної: var x = "hello"; замість string x = "hello";
  • Безіменні типи: var x = new { Name = "James" };
  • Методи-розширення - додавання методу в існуючий клас за допомогою ключового слова this при першому параметрі статичної функції.
 public  static  class  StringExtensions  {  public  static  int  ToInt32  (  this  string  val  )  {  return  Int32  .  Parse  (  val  )  ;  }  }  / / ...  string  s  =  "10"  ;  int  x  =  s  .  ToInt32  (  )  ; 
  • Автоматичні властивості: компілятор згенерує закрите (private) поле і відповідні аксессор і мутатори для коду виду
 public  string  Name  {  get  ;  private  set  ;  } 

C # 3.0 сумісний з C # 2.0 за генерується MSIL -коду; поліпшення в мові - чисто синтаксичні і реалізуються на етапі компіляції. Наприклад, багато з інтегрованих запитів LINQ можна здійснити, використовуючи безіменні делегати в поєднанні з предикативними методами над контейнерами начебто List.FindAll і List.RemoveAll.


4.4. Версія 4.0

Превью C # 4.0 було представлено в кінці 2008 року, разом з CTP-версією Visual Studio 2010.

Visual Basic 10.0 і C # 4.0 були випущені у квітні 2010 року, одночасно з випуском Visual Studio 2010.

Нові можливості у версії 4.0 [14]
  • Можливість використання пізнього зв'язування, для використання:
    • з мовами з динамічною типізацією ( Python, Ruby)
    • з COM-об'єктами
    • відображення (reflection)
    • об'єктів із змінною структурою (DOM). З'являється ключове слово dynamic.
  • Іменовані і опціональні параметри
  • Нові можливості COM interop
  • Ковариантности і контрваріантность
  • Контракти в коді (Code Contracts)

Приклади:

 dynamic calc  =  GetCalculator  (  )  ;  int  sum  =  calc  .  Add  (  10  ,  20  )  ;  / / Динамічний виклик 
 public  void  SomeMethod  (  int  x,  int  y  =  5  ,  int  z  =  7  )  ;  / / Опціональні параметри 

5. Приклад "Hello, World!"

Нижче представлений код класичної програми " Hello world "на C # для консольного програми:

 using  System  ;  namespace  Example  {  class  Program  {  static  void  Main  (  )  {  Console  .  WriteLine  (  "Hello World!"  )  ;  / / Висновок заданого тексту в консоль  Console  .  ReadKey  (  )  ;  / / Очікування натискання клавіші користувачем  }  }  } 

і код цієї ж програми для програми Windows Forms:

 using  System  ;  using  System.Windows.Forms  ;  namespace  WindowsFormsApplication1  {  public  partial  class  Form1  :  Form  {  public  Form1  (  )  {  InitializeComponent  (  )  ;  }  private  void  button1_Click  (  object  sender, EventArgs e  )  / / Елементи label і button додані попередньо  {  label1  .  Text  =  "Hello, World!"  ;  }  }  } 

6. Реалізації

Існує декілька реалізацій C #:

  • Реалізація C # у вигляді компілятора csc.exe включена до складу . NET Framework.
  • Реалізація в Microsoft Silverlight.
  • У складі проекту Rotor (Shared Source Common Language Infrastructure) компанії Microsoft.
  • Проект Mono включає в себе реалізацію C # з відкритим вихідним кодом.
  • Проект DotGNU також включає компілятор C # з відкритим кодом.
  • DotNetAnywhere [15] - орієнтована на Embedded -системи реалізація CLR, підтримує практично всю специфікацію C # 2.0.

Примітки

  1. "Оскільки мова С # успадкував свій синтаксис від C + + і Java ..." (Трей Неш "C # 2010: прискорений курс для професіоналів" ("Accelerated C # 2010") - М.: Вільямс, 2010. - С. 592. - ISBN 978 - 5-8459-1638-9; стр. 17)
  2. "Мова C # ... успадкував багато корисних можливостей від інших мов програмування і безпосередньо пов'язаний з двома найбільш широко вживаними в світі комп'ютерними мовами - C і C + +, а також з мовою Java.", Проте далі: "Зв'язок між C # і Java складніша. Обидва мови розроблені для створення переносимого коду, базуються на C і C + +, використовують їх синтаксис і об'єктну модель. Однак між цими мовами немає прямого зв'язку, вони більше схожі на двоюрідних братів, які мають спільних предків, але відрізняються багатьма ознаками. "( Герберт Шилдт "C # навчальний курс". - М.: Пітер. 2003. - Стор 20).
  3. Герберт Шилдт Повний довідник по С #. : Пер. з англ. - М.: Видавничий дім "Вільямс", 2004. - 752 с. : Іл. - Парал. тит. англ. ISBN 5-8459-0563-X (укр.) стор 26-27.
  4. Kovacs, James C # /. NET History Lesson - www.jameskovacs.com / blog / CNETHistoryLesson.aspx (September 7, 2007). Фотогалерея - www.webcitation.org/616vU96EP з першоджерела 21 серпня 2011.
  5. Microsoft C # FAQ - msdn.microsoft.com/vcsharp/previous/2002/FAQ/default.aspx. Microsoft. (Недоступна посилання) (Недоступна посилання - історія - web.archive.org / web / * / http://msdn.microsoft.com/vcsharp/previous/2002/FAQ/default.aspx)
  6. C # Language Specification - www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf - 4th. - ECMA International, 2006.
  7. Visual C #. Net Standard - www.microsoft.com/presspass/images/gallery/boxshots/web/visual-c-sharp03.jpg (JPEG). Microsoft (September 4, 2003). Фотогалерея - www.webcitation.org/616vVNZ7G з першоджерела 21 серпня 2011.
  8. Standard ECMA-334 C # Language Specification, 4rd edition (June 2006) - www.ecma-international.org/publications/standards/Ecma-334.htm
  9. ISO / IEC 23270:2003, Information technology - C # Language Specification - standards.iso.org/ittf/PubliclyAvailableStandards/c036768_ISO_IEC_23270_2003 (E). zip
  10. Специфікація по Microsoft C # 2.0 містить опис лише нових можливостей версії 2.0. Особливості версії описані в специфікації 1.2, наведеної вище.
  11. Для версій мови C # 3.0 і 4.0 поки немає затверджених ECMA або ISO / IEC специфікацій.
  12. Differences Between C + + Templates and C # Generics (C # Programming Guide) - msdn2.microsoft.com/en-us/library/c6cyy67b.aspx
  13. MSDN News - channel9.msdn.com/ShowPost.aspx? PostID = 10276
  14. C # Future - code.msdn.microsoft.com / csharpfuture
  15. Dot Net Anywhere - dotnetanywhere.org /

Література

  • Ендрю Троелсен. Мова програмування C # 2010 і платформа. NET 4.0 = Pro C # 2010 and the. NET 4.0 Platform - 5-е изд. - М .: Вільямс, 2010. - С. 1392. - ISBN 978-5-8459-1682-2.
  • Герберт Шилдт C # 4.0: повне керівництво = C # 4.0 The Complete Reference - М .: "Вільямс", 2010. - С. 1056. - ISBN 978-5-8459-1684-6.
  • Джон Скит C #: програмування для професіоналів, 2-е видання = C # in Depth, 2nd Edition - М .: "Вільямс", 2011. - 544 с. - ISBN 978-5-8459-1555-9.
  • Крістіан Нейгел, Карлі Уотсон і ін Visual C # 2010: повний курс = Beginning Microsoft Visual C # 2010 - М .: Діалектика, 2010. - ISBN 978-5-8459-1699-0.
  • Трей Неш C # 2010: прискорений курс для професіоналів = Accelerated C # 2010 - М .: Вільямс, 2010. - С. 592. - ISBN 978-5-8459-1638-9.
  • Крістіан Нейгел, Білл Івьен, Джей Глінн, Карлі Уотсон, Морган Скиннер C # 4: Платформа. NET 4 для професіоналів = Professional C # 4 and. NET 4 - М .: Діалектика, 2010. - С. 1440. - ISBN 978-5-8459-1656-3.

Цей текст може містити помилки.

Схожі роботи | скачати

Схожі роботи:
F Sharp
Sharp
© Усі права захищені
написати до нас