Описание тега c#
C# - это мультипарадигмальный управляемый, объектно-ориентированный язык программирования для сборки мусора, созданный Microsoft в сочетании с платформой.NET, но также используемый с реализациями сторонних разработчиков (в частности, Mono).
Версии 1.0/1.2 и 2.0 C# были представлены и утверждены как стандарты ECMA и ISO/IEC. По состоянию на декабрь 2010 года не существует спецификаций ECMA или ISO/IEC для C# 3.0 и 4.0, однако языковые спецификации доступны от Microsoft ( 3.0 и 4.0 соответственно).
Система типов языка изначально была статической, допускались только явные объявления переменных. Тем не менее, введение var
(C# 3.0) и dynamic
(C# 4.0) позволяют ему использовать вывод типов для неявной типизации переменных и использовать динамические системы типов соответственно. Делегаты (особенно с поддержкой лексического замыкания для анонимных методов (C# 2.0) и лямбда-выражений (C# 3.0)) позволяют использовать язык для функционального программирования.
Компиляция обычно выполняется в Common Intermediate Language (CIL), который затем JIT-компилируется в собственный код (и кэшируется) во время выполнения в Common Language Runtime (CLR); однако такие параметры, как Ngen (.NET) и AOT (Mono) означают, что это не единственный вариант. Кроме того, некоторые фреймворки (например, Micro Framework) действуют как интерпретаторы CIL без JIT.
Возможно, необычно, что дженерики в C# предоставляются (частично) средой выполнения, в отличие от (для сравнения) шаблонов C++ или дженериков Java (которые используют стирание типов).
Сочетание Microsoft .NET для Windows (рабочий стол / сервер), Mono (рабочий стол / сервер / мобильный), Silverlight / Moonlight (браузер / мобильный), Compact Framework (мобильный) и Micro Framework (встроенные устройства) делает его доступным для широкого спектра платформ.
Привет, мир
using System;
class Hello
{
static void Main()
{
Console.WriteLine("Hello, World");
}
}
Вопросы и ответы
- Каковы правильные номера версий для C#?
- Почему
Random
давать одинаковые результаты каждый раз? - Захваченные переменные в циклах
- Почему я не могу конвертировать
List<Banana>
вList<Fruit>
? - Передает ли C# объекты по ссылке?
Ресурсы
- Спецификация
- Статья в Википедии
- Блог Эрика Липперта
- Руководство по программированию
- книги
- CLR через C#
- C# в двух словах
- C# в глубине
- Ускоренный C#
- Head First C#
- Язык программирования C# ( 3-е издание, 4-е издание)
- Руководство по проектированию рамок
- Essential C# ( 4.0 (3-е издание))