Интерактивный C#

от автора

Обновление с номером 1 принесло в Visual Studio не только немного измененный значок, но и еще разные приятные нововведения. Кстати, вот так выглядит новый значок:

Одним из дополнений является «Интерактивный C#». Фактически это окошко REPL.

Аббривиатура REPL означает Read-eval-print loop (в переводе получится что-то вроде «считать-выполнить-вывести на экран, повторить»)
Название read-eval-print loop происходит от имён примитивов языка Lisp, которые реализуют подобную функциональность. Примерно вот так выглядит программа REPL на языке Lisp. Всего одна строчка кода:

(loop (print (eval (read)))) 

То есть первым делом текст считывается, затем выполняется в качестве команды, выводится результат и все это можно сделать еще раз.
REPL среда может быть полезной не только для изучения языка, но и для каких-либо экспериментов с API. С ее помощью можно также запускать и скрипты на C#.

Раньше REPL для Visual Studio и C# был доступен в виде расширения. Сейчас вы так же можете скачать его для VS2015 (если вдруг по каким-то причинам не хотите обновляться до VS2015 update 1 или вас терзает любопытство посмотреть на альтернативный вариант):
VisualStudio C# REPL
Кроме того есть несколько сайтов, которые позволяют поиграть с C# онлайн. Например такой: C# Pad: Run C# Code Online.

Для того чтобы открыть окошко интерактивного C# из Visual Studio 2015, необходимо зайти в меню «Вид», выбрать пункт «Другие окна» и подпункт «Интерактивный C#».

Нам откроется такое вот окошко:

Альтернативно, чтобы поработать с интерактивным C# можно открыть «Командная строка разработчика для VS2015» и набрать csi.

Начнем с самого простого кода C#, который можно выполнить:

Console.Write("Hello, World!") 

Нажатие Enter не удивит нас и ожидаемо выведет на экран «Hello, World!». В процессе ввода кода вы можете заметить, что имеется поддержка IntelliSense.

Можно ввести 5+10, нажать Enter и получить ответ в виде 15-ти. Можно присвоить значение переменной. И после, в какой-либо последующей строке использовать эту переменную.

Для примера можно опробовать простенький LINQ запрос данных из массива:

int[] source = new[] { 3, 8, 4, 6, 1, 7, 9, 2, 4, 8 }; foreach (int i in source.Where(x => x > 5))   Console.WriteLine(i); 

Запуск команд и задание значений переменным это не все что можно делать в интерактивной строке. Можно еще и задавать ссылки на пространства имен с помощью директивы #r. Например:

#r "System.Windows.Forms" using System.Windows.Forms; var f= new Form { BackgroundImage = System.Drawing.Bitmap.FromFile("D:/fun.jpg") }; f.ShowDialog(); 

Некоторые пространства имен можно использовать без добавления директивой #r. Например, скачаем файл из habrastorage:

using System.Net; WebClient webClient = new WebClient(); webClient.DownloadFile("https://hsto.org/files/229/aad/50d/229aad50de554be19ce60c60dbfd2e7e.png", @"d:\myfile.png"); 

Этот текст можно как ввести в консоли интерактивного C#, так и сохранить в текстовом файле формата csx.

С помощью директивы #load можно загрузить и выполнить скрипт. Например, вот так:

#load "myScriptContext.csx"

Альтернативно выполнить скрипт можно из «Командной строки разработчика для VS2015» выполнив команду csi и указав путь к скрипту:

csi /path/myScript.csx

Еще есть крайне полезная директива – это директива #clear или #cls. Оба значения работают одинаково и очищают экран. Очищается только экран, все произошедшие объявления переменных, пространств имен и кода остаются в памяти.

#help – эта директива выводит справку
#reset – очищает среду исполнения. Если вызвать #reset noconfig то будет пропущен запуск конфигурационного скрипта, запускающегося при инициализации и добавляющего основные пространства имен.

Напоследок предлагаю вам посмотреть видео (на английском языке) от Kasey Uhlenhuth в котором она извлекает информацию из GitHub:

И почитать вики (опять же на английском):
Interactive Window
C# Interactive Walkthrough

ссылка на оригинал статьи http://habrahabr.ru/post/273037/


Комментарии

Добавить комментарий

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