Возможности sharpdevelop

Реализации

Microsoft возглавляет разработку эталонных компиляторов C # с открытым исходным кодом и набора инструментов. Первый компилятор, Roslyn , компилируется в промежуточный язык (IL), а второй, RyuJIT, представляет собой JIT-компилятор (точно в срок), который является динамическим, выполняет оптимизацию на лету и компилирует IL в собственный код для внешнего интерфейса процессора. RyuJIT имеет открытый исходный код и написан на C ++. Roslyn полностью написан на управляемом коде (C #), открыт, а функциональность представлена ​​в виде API. Таким образом, это позволяет разработчикам создавать инструменты рефакторинга и диагностики. Две ветви официальной реализации: .NET Framework (с закрытым исходным кодом, только для Windows) и .NET Core (с открытым исходным кодом, кросс-платформенный); в конечном итоге они объединились в одну реализацию с открытым исходным кодом: .NET 5.0. В .NET Framework 4.6 новый JIT-компилятор заменил прежний.

Другие компиляторы C # (некоторые из которых включают реализацию библиотеки классов Common Language Infrastructure и .NET):

  • Mono , проект, спонсируемый Microsoft, предоставляет компилятор C # с открытым исходным кодом, полную реализацию интерфейса командной строки с открытым исходным кодом (включая необходимые библиотеки фреймворка, как они указаны в спецификации ECMA) и почти полную реализацию библиотек классов NET. в .NET Framework 3.5.
  • Элементы инструмента цепь из RemObjects включает RemObjects C #, который компилирует C # код для .NET в Common Intermediate Language , Java байткод , какао , Android байткод , WebAssembly и машинный код для Windows, MacOS и Linux.
  • Проект DotGNU (сейчас прекращенный) также предоставил компилятор C # с открытым исходным кодом, почти полную реализацию Common Language Infrastructure, включая необходимые библиотеки фреймворка, как они указаны в спецификации ECMA, и подмножество некоторых оставшихся проприетарных классов Microsoft .NET. библиотеки до .NET 2.0 (не задокументированные и не включенные в спецификацию ECMA, но включенные в стандартный дистрибутив Microsoft .NET Framework).

Игровой движок Unity использует C # в качестве основного языка сценариев. В игровом движке Godot реализован дополнительный модуль C # благодаря пожертвованию в размере 24 000 долларов от Microsoft.

C# версии 9.0

Версия C# 9.0 выпущена с .NET 5. Это версия языка используется по умолчанию для любой сборки, предназначенной для выпуска .NET 5. Она содержит следующие новые и улучшенные функции:

В C# 9.0 добавлены следующие функции и улучшения языка C#.

    • Целые числа собственного размера
    • Указатели функций
    • Отмена создания флага localsinit
    • Выражения с целевым типом
    • Анонимные функции
    • Условное выражение с целевым типом
    • Ковариантные возвращаемые типы
    • Поддержка расширения для циклов
    • Параметры удаления лямбда-выражения
    • Атрибуты локальных функций
    • Инициализаторы модулей
    • Новые функции для разделяемых методов

В C# 9.0 получили развитие три направления предыдущих выпусков: устранение формальностей, отделение данных от алгоритмов и предоставление большего количества шаблонов в большем количестве мест.

Операторы верхнего уровня упрощают чтение основной программы. Сократилась потребность в формальностях: больше не нужны ни пространства имен, , ни классы, ни .

Внедрение обеспечивает краткость синтаксиса для ссылочных типов, которые следуют семантике значений для равенства. Эти типы используются для определения контейнеров данных, которые обычно определяют минимальное поведение. предоставляют возможность для обратимого изменения (выражений ) в записях. В C# 9.0 также добавлены ковариантные возвращаемые типы, благодаря чему производные записи могут переопределять виртуальные методы и возвращать тип, производный от типа возвращаемого значения базового метода.

Возможности сопоставления шаблонов расширены в нескольких направлениях. Числовые типы теперь поддерживают шаблоны диапазонов. Шаблоны можно комбинировать с помощью шаблонов , и . Для уточнения более сложных шаблонов можно добавить круглые скобки.

Высокопроизводительные вычисления на C# поддерживает еще один набор функций.

  • Типы и моделируют целочисленные типы собственного размера в целевом ЦП.
  • предоставляют функциональные возможности, подобные возможностям делегатов, но при этом не требуют выделения, необходимого для создания объекта-делегата.
  • Инструкцию можно опустить для сохранения инструкций.

Еще один набор улучшений поддерживает сценарии, в которых генераторы кода добавляют функциональные возможности.

  •  — это методы, которые среда выполнения вызывает при загрузке сборки.
  • Разделяемые методы поддерживают новые модификаторы доступа и возвращаемые типы, отличные от void. В таких случаях необходимо предоставить реализацию.

В C# 9.0 добавлено множество других небольших функций, повышающих производительность разработчиков, а также написание и чтение кода.

  • Выражения целевого типа
  • Анонимные функции
  • Условные выражения целевого типа
  • Поддержка расширения для циклов
  • Лямбда-выражения могут объявлять параметры отмены
  • Атрибуты могут применяться к локальным функциям

Выпуск C# 9.0 — это следующий этап развития, благодаря которому C# остается современным языком программирования общего назначения. Его возможности обеспечат дальнейшую поддержку современных рабочих нагрузок и типов приложений.

Статья изначально опубликована в блоге NDepend , с разрешения Эрика Дитриха (Erik Dietrich) и Патрика Смачиа (Patrick Smacchia).

Система общих типов

C # имеет единую систему типов . Эта унифицированная система типов называется системой общих типов (CTS).

Унифицированная система типов подразумевает, что все типы, включая примитивы, такие как целые числа, являются подклассами класса. Например, каждый тип наследует метод.

Категории типов данных

CTS разделяет типы данных на две категории:

  1. Типы ссылок
  2. Типы значений

Экземпляры типов значений не имеют ни ссылочной идентичности, ни ссылочной семантики сравнения. Сравнение равенства и неравенства для типов значений сравнивает фактические значения данных в экземплярах, если соответствующие операторы не перегружены. Типы значений являются производными , всегда имеют значение по умолчанию и всегда могут быть созданы и скопированы. Некоторые другие ограничения типов значений состоят в том, что они не могут быть производными друг от друга (но могут реализовывать интерфейсы) и не могут иметь явного конструктора по умолчанию (без параметров). Примерами типов значений являются все примитивные типы, такие как (32-битное целое число со знаком), (32-битное число с плавающей запятой IEEE), (16-битная единица кода Unicode) и (идентифицирует конкретный момент времени. с точностью до наносекунды). Другими примерами являются (перечисления) и (определяемые пользователем структуры).

Напротив, ссылочные типы имеют понятие ссылочной идентичности, что означает, что каждый экземпляр ссылочного типа по своей сути отличается от любого другого экземпляра, даже если данные в обоих экземплярах одинаковы. Это отражается в сравнениях равенства и неравенства по умолчанию для ссылочных типов, которые проверяют ссылочное, а не структурное равенство, если только соответствующие операторы не перегружены (например, в случае ). Некоторые операции не всегда возможны, например создание экземпляра ссылочного типа, копирование существующего экземпляра или выполнение сравнения значений двух существующих экземпляров. Хотя определенные ссылочные типы могут предоставлять такие услуги, открывая открытый конструктор или реализуя соответствующий интерфейс (например, или ). Примеры ссылочных типов: (конечный базовый класс для всех других классов C #), (строка символов Юникода) и (базовый класс для всех массивов C #).

Обе категории типов могут быть расширены с помощью типов, определяемых пользователем.

Бокс и распаковка

Упаковка — это операция преобразования объекта-значения в значение соответствующего ссылочного типа. Бокс в C # неявный.

Распаковка — это операция преобразования значения ссылочного типа (ранее упакованного) в значение типа значения. Распаковка в C # требует явного приведения типа . Упакованный объект типа T может быть распакован только в T (или T, допускающий значение NULL).

Пример:

int foo = 42;         // Value type.
object bar = foo;     // foo is boxed to bar.
int foo2 = (int)bar;  // Unboxed back to value type.

Синтаксис

Основной синтаксис языка C # аналогичен синтаксису других языков C-стиля, таких как C, C ++ и Java, в частности:

  • Точка с запятой используется для обозначения конца инструкции.
  • Фигурные скобки используются для группировки операторов. Операторы обычно группируются в методы (функции), методы в классы и классы в пространства имен .
  • Переменные назначаются с использованием знака равенства , но сравниваются с использованием двух последовательных знаков равенства .
  • Квадратные скобки используются с массивами как для их объявления, так и для получения значения по заданному индексу в одном из них.

История

11 сентября 2000 года Майк Крюгер запустил проект во время тестирования первой общедоступной версии .NET Framework 1.0. В то время общедоступной C # /. NET IDE не было. Поэтому он решил написать редактор кода для запуска компилятора. В начале своей разработки проект был разделен для разработки Mono и Gtk # на проект MonoDevelop , который поддерживается как кроссплатформенная IDE, а после приобретения Microsoft Xamarin стал основой Visual Studio для Mac .

По состоянию на 2013 год SharpDevelop был загружен по крайней мере 8 миллионов раз по всему миру, кодовая база SharpDevelop была задокументирована в книге Dissecting a C # Application: Inside SharpDevelop (2003), написанной основной группой разработчиков и опубликованной Wrox Press .

18 сентября 2017 года Дэниел Грюнвальд из команды ICSharpCode объявил, что проект «мертв» по ​​причинам, связанным с быстрым темпом изменений в C # и .NET, включая .NET Core , и предложил пользователям SharpDevelop перейти на MonoDevelop или Visual Studio Code. IDE, каждая из которых рекомендуется в качестве подходящей замены с открытым исходным кодом, которая является целью регулярных обновлений и другого обслуживания.

Примеры

Привет, мир

Ниже приводится очень простая программа на C #, версия классического примера » Hello world » с использованием функции операторов верхнего уровня, представленной в C # 9:

using System;

Console.WriteLine("Hello, world!");

Для кода, написанного как C # 8 или ниже, логика точки входа программы должна быть написана в методе Main внутри типа:

using System;

// A version of the classic "Hello World" program
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, world!");
    }
}

Этот код отобразит этот текст в окне консоли:

Hello, world!

У каждой строки есть цель:

using System;

Вышеупомянутая строка импортирует все типы в пространстве имен. Например, класс, используемый позже в исходном коде, определяется в пространстве имен, то есть его можно использовать без предоставления полного имени типа (которое включает пространство имен).

// A version of the classic "Hello World" program

Эта строка является комментарием; он описывает и документирует код для программиста (ов).

class Program

Выше приведено определение класса для класса. Все, что следует между скобками, описывает этот класс.

{
    ...
}

Фигурные скобки обозначают границы блока кода. В этом первом случае они отмечают начало и конец занятия.

static void Main(string[] args)

Это объявляет метод члена класса, с которого программа начинает выполнение. Среда выполнения .NET вызывает метод. В отличие от Java , методу не требуется ключевое слово, которое сообщает компилятору, что метод может быть вызван из любого места любым классом. Письмо эквивалентно письму . делает метод доступным без экземпляра . Точка входа каждого консольного приложения должна быть объявлена, иначе программе потребуется экземпляр , но любому экземпляру потребуется программа. Чтобы избежать этой неразрешимой круговой зависимости , компиляторы C #, обрабатывающие консольные приложения (например, указанные выше), сообщают об ошибке, если метод отсутствует . Ключевое слово заявляет , что не имеет возвращаемого значения .

Console.WriteLine("Hello, world!");

Эта строка записывает вывод. является статическим классом в пространстве имен. Он предоставляет интерфейс для стандартных потоков ввода, вывода и ошибок для консольных приложений. Программа вызывает метод , который отображает на консоли строку с аргументом — строкой .

GUI

Пример графического интерфейса :

using System;
using System.Windows.Forms;

class Program
{
    static void Main()
    {
        MessageBox.Show("Hello, World!");
        Console.WriteLine("Is almost the same argument!");
    }
}

Этот пример аналогичен предыдущему, за исключением того, что он генерирует диалоговое окно , содержащее сообщение «Hello, World!» вместо записи в консоль.

Изображений

Еще одна полезная библиотека — это библиотека, которая используется для программного рисования изображений. Например:

using System;
using System.Drawing;

public class Example
{
    public static Image img;

    static void Main()
    {
        img = Image.FromFile("Image.png");
    }
}

Это создаст изображение, идентичное тому, что хранится в «Image.png».

Стандартизация и лицензирование

В августе 2001 года Microsoft , Hewlett-Packard и Intel совместно спонсировали предоставление спецификаций C #, а также Common Language Infrastructure (CLI) организации по стандартизации Ecma International . В декабре 2001 года ECMA выпустила спецификацию языка C # ECMA-334 . C # стал стандартом ISO в 2003 году (ISO / IEC 23270: 2003 — Информационные технологии — Языки программирования — C # ). ECMA ранее принимала эквивалентные спецификации как 2-е издание C # в декабре 2002 г. В июне 2005 г. ECMA утвердила издание 3 спецификации C # и обновила ECMA-334. Добавления включали частичные классы, анонимные методы, типы, допускающие значение NULL, и универсальные шаблоны (в чем-то похожие на шаблоны C ++ ). В июле 2005 года ECMA представила в ISO / IEC JTC 1 через ускоренный процесс последнего стандарты и соответствующие ТУ. Обычно этот процесс занимает 6–9 месяцев.

Определение языка C # и интерфейс командной строки стандартизированы в соответствии со стандартами ISO и Ecma, которые обеспечивают разумную и недискриминационную лицензионную защиту от патентных притязаний.

Изначально Microsoft согласилась не предъявлять иски разработчикам ПО с открытым исходным кодом за нарушение патентов в некоммерческих проектах на часть платформы, на которую распространяется OSP. Microsoft также согласилась не применять патенты, относящиеся к продуктам Novell, против платежеспособных клиентов Novell, за исключением списка продуктов, в которых явно не упоминается C #, .NET или реализация .NET от Novell ( The Mono Project ). Однако Novell утверждала, что Mono не нарушает никаких патентов Microsoft. Microsoft также заключила конкретное соглашение не обеспечивать соблюдение патентных прав, связанных с подключаемым модулем браузера Moonlight , который зависит от Mono, при условии, что он получен через Novell.

Десять лет спустя Microsoft начала разрабатывать бесплатные кроссплатформенные инструменты с открытым исходным кодом для C #, а именно Visual Studio Code , .NET Core и Roslyn . Моно присоединился к Microsoft как проект Xamarin , дочерней компании Microsoft.

Функции

SharpDevelop был разработан как бесплатная и легкая альтернатива Microsoft Visual Studio и содержит эквивалентную функцию почти для всех основных функций Visual Studio Express и функции, очень похожие на те, что есть в Borland Kylix и Delphi , включая расширенное управление проектами, редактирование кода, компиляцию приложений. и функции отладки. В частности, IDE включает в себя конструктор графического интерфейса , представления кода / дизайна, подсветку синтаксиса , меню автозаполнения (аналогично IntelliSense ), возможность компилировать и отлаживать формы / консольные приложения .NET Framework , мастер «Новый проект» , панели инструментов, меню , панели и стыковочная система, а также встроенные инструменты рефакторинга кода , а также встроенный отладчик, который позволяет выполнять пошаговое выполнение, просматривать значения объектов в памяти и точки останова .

Чтобы упростить миграцию проекта, SharpDevelop изначально работает с файлами проектов и кода Visual Studio. Он может компилировать приложения для .NET Framework версий 2.0, 3.0, 3.5, 4.0, 4.5.1 и .NET Compact Framework 2.0 и 3.5.

Дизайнеры графического интерфейса SharpDevelop работают с языками C #, VB.NET, Boo, а также с языками IronPython и IronRuby, используя следующие технологии графического интерфейса пользователя:

  • Windows Forms
  • Windows Presentation Foundation (WPF)
  • Entity Framework

SharpDevelop полностью написан на C # и состоит примерно из 20 компонентов, которые объединяются в приложение. Компонент редактора исходного кода известен как AvalonEdit и может использоваться другими приложениями.

Он также включает в себя функции для:

  • Внешние компоненты COM и ActiveX
  • Анализ кода ( FxCop )
  • Модульное тестирование ( NUnit )
  • Покрытие кода (PartCover)
  • Профайлер
  • Subversion (TortoiseSVN)
  • Git
  • Mercurial
  • StyleCop Аддин
  • Генерация документации ( Sandcastle , SHFB)
  • Плагины
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector