Microsoft Visual Studio



Microsoft Visual Studio — линейка продуктов компании Майкрософт, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, .NET Compact Framework и Microsoft Silverlight.

Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и как отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных. Visual Studio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода (как например,Subversion и Visual SourceSafe), добавление новых наборов инструментов (например, для редактирования и визуального проектирования кода на предметно-ориентированных языках программирования или инструментов для прочих аспектовцикла разработки программного обеспечения (например, клиент Team Explorer для работы с Team Foundation Server).

 

 

 

 

Visual Studio включает один или несколько компонентов из следующих:

                   Visual Basic .NET, а до его появления — Visual Basic

                   Visual C++

                   Visual C#

                   Visual J#

                   Visual F# (включён в Visual Studio 2010)

 

Visual Studio 2010.

Visual Studio 2010 (кодовое имя Hawaii, для Ultimate — Rosario; внутренняя версия 10.0) — выпущена 12 апреля 2010 года вместе с .NET Framework 4.0. Visual Studio включает поддержку языков C# 4.0 и Visual Basic .NET 10.0, а также языка F#, отсутствовавшего в предыдущих версиях.

 

Операторы MS Visual Studio 2010.

Операторы объявления:

Операторы объявления используются для именования и определения процедур, переменных, свойств, массивов и констант. При объявлении элемента программирования можно также определить его тип данных, уровень доступа и область действия.

В следующем примере показаны три объявления:

Public Sub applyFormat()

    Const limit As Integer = 33

    Dim thisWidget As New widget

    ' Insert code to implement the procedure.

End Sub

 

Первое объявление — это оператор Sub. Он совместно с соответствующим ему оператором End Sub объявляет процедуру с именем applyFormat. Он также указывает, что applyFormat является Public, что означает, что любой код, который к нему обращается, может его вызвать.

Второе объявление — это оператор Const, который объявляет константу limit, указывая тип данных Integer и значение 33.

Третье объявление — это оператор Dim, который объявляет переменную thisWidget. Тип данных является определенным объектом, а именно объектом, созданным из класса Widget. 

Исполняемые операторы:

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

В следующем примере используется управляющая структура If...Then...Else для выполнения различных блоков кода на основе значения переменной. В каждом блоке кода цикл For...Next выполняется заданное число раз.

Public Sub startWidget(ByVal aWidget As widget,

    ByVal clockwise As Boolean, ByVal revolutions As Integer)

    Dim counter As Integer

    If clockwise = True Then

        For counter = 1 To revolutions

            aWidget.spinClockwise()

        Next counter

    Else

        For counter = 1 To revolutions

            aWidget.spinCounterClockwise()

        Next counter

    End If

End Sub

Инструкция If в предыдущем примере проверяет значение параметра clockwise. Если значение равно True, то вызывается метод spinClockwise изaWidget. Если значение равно False, то вызывается метод spinCounterClockwise из aWidget. Управляющая структура If...Then...Else завершаетсяEnd If.

Цикл For...Next в каждом блоке вызывает соответствующий метод определенное количество раз, равное значению параметра revolutions.

Операторы присваивания:

Операторы присваивания выполняют присваивание, сводящееся к вычислению значения справа от оператора присваивания (=) и его записи в элемент слева, как в следующем примере:

v = 42

 

В этом примере оператор присваивания сохраняет значение литерала 42 в переменной v.

Подходящие элементы программирования:

Элемент программирования слева от оператора присваивания должен иметь возможность принимать и хранить значение. Это означает, что он должен быть переменной или свойством, не являющимся ReadOnly (Visual Basic), или же элементом массива. В контексте оператора присваивания такой элемент иногда называется lvalue ("левое значение").

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

x = y + z + findResult(3)

 

В этом примере осуществляется сложение значения переменной y со значением переменной z, а затем сложение со значением, возвращаемым функцией findResult. Общее значение этого выражения затем сохраняется в переменной x.

Типы данных в операторах присваивания:

В дополнение к числовым значениям оператор присваивания также может присваивать значения типа String, как показано в следующем примере:

Dim a, b As String

a = "String variable assignment"

b = "Con" & "cat" & "enation"

' The preceding statement assigns the value "Concatenation" to b.

Можно также присваивать значения Boolean с помощью литерала Boolean или выражения Boolean, как показано в следующем примере:

Dim r, s, t As Boolean

r = True

s = 45 > 1003

t = 45 > 1003 Or 45 > 17

' The preceding statements assign False to s and True to t.

Аналогично, можно присваивать соответствующие значения элементам программирования типов Char, Date и Object. Можно также присвоить экземпляр объекта элементу класса, из которого этот экземпляр был создан.

Составные операторы присваивания:

Составные операторы присваивания сначала выполняют операцию над выражением перед присваиванием его значения программному элементу. В следующем примере показан один из этих операторов, +=, который прибавляет значение переменной в левой части оператора к значению выражения справа:

n += 1

Оператор объединения и присваивания (&=) удобен при добавлении строки в конец уже существующих строк, например:

Dim q As String = "Sample "

q &= "String"

' q now contains "Sample String".

Преобразование типов в операторах присваивания:

Значение, присваиваемое переменной, свойству или элементу массива, должно иметь тип данных конечного элемента. В общем случае следует стремиться создавать значение того же типа данных, что и у конечного элемента. Тем не менее, во время присваивания некоторые типы могут быть преобразованы в другие.

Сведения о преобразовании типов данных см. в разделе Преобразование типов в Visual Basic. Говоря коротко, Visual Basic автоматически преобразует значение заданного типа к любому другому типу, до которого он может быть расширен. Расширяющее преобразование всегда успешно завершается во время выполнения и не приводит к потере данных. Например, Visual Basic при необходимости преобразует значение типа Integer к Double, посколькуInteger имеет меньшую разрядность, чем Double. Дополнительные сведения см. в разделе Расширяющие и сужающие преобразования (Visual Basic).

Сужающие преобразования (не являющиеся расширяющими) выполняются с риском сбоя или потери данных во время выполнения. Явное сужающее преобразование можно выполнять с помощью функции преобразования типа; также можно указать компилятору выполнять все преобразования неявно, установив параметр Option Strict Off.

Добавление комментариев:

Исходный код не всегда понятен без пояснений даже для написавшего его программиста. Поэтому для документирования своих кодов большинство программистов использует комментарии. С помощью комментариев в коде можно описать процедуру или определенную инструкцию для тех, кто будет в дальнейшем просматривать этот код или работать с ним. При компиляции в Visual Basic комментарии игнорируются, и они не влияют на скомпилированный код.

Строки комментариев начинаются с апострофа (') или REM, за которым следует пробел. Они могут быть добавлены в любое место кода, за исключением места внутри строковых типов данных. Для добавления комментария в инструкцию вставьте апостроф или REM после оператора, за которым следует комментарий. Комментарии также могут размещаться на отдельной строке. В следующем примере показаны эти возможности:

' This is a comment on a separate code line.

REM This is another comment on a separate code line.

x += a(i) * b(i) ' Add this amount to total.

MsgBox(statusMessage) REM Inform operator of status.

 

 

 

 

Массивы в Visual Basic

Массив представляет собой набор значений, логически связанных друг с другом, например, число учеников в каждом классе в школе.

Массив позволяет ссылаться на эти связанные значения по одному имени и используя номер, называемый индексом или подиндексом, чтобы отличить элементы друг от друга. Отдельные значения, называются элементами массива. Они представляются непрерывной последовательностью от индекса 0 до наибольшего значения индекса.

В отличие от массива, переменная, содержащая одиночное значение, называется скалярной переменной.

В следующем примере объявляется переменная массива для хранения числа учеников в каждом классе школы:

Массив students в предыдущем примере содержит 7 элементов. Индексы элементов лежат в диапазоне от 0 до 6. Использовать массив проще, чем объявить 7 отдельных переменных.

На следующем рисунке показан массив students. Для каждого элемента массива:

            Индекс элемента представляет курс(индекс 0 представляетабитурента).

            Значение, содержащееся в элементе, представляет число учеников в этом классе.

 

 

 

 

Элементы массива "учеников"


 

В следующем примере показано обращение к первому, второму и последнему элементу массива students:

Dim kindergarten As Integer = students(0)

Dim firstGrade As Integer = students(1)

Dim sixthGrade As Integer = students(6)

MsgBox("Students in kindergarten = " & CStr(kindergarten))

MsgBox("Students in first grade = " & CStr(firstGrade))

MsgBox("Students in sixth grade = " & CStr(sixthGrade))

Можно ссылаться на массив в целом, используя только имя переменной массива без индексов.

Размерность массива

Массив students в предыдущем примере использует один индекс и считается одномерным. Массив, использующий более одного индекса, называется многомерным массивом.

Другой вид массива может содержать массивы в качестве элементов. Это называется массивом массивов или неравномерным массивом. Массив массивов может быть одномерным или многомерным. Иногда структура данных в приложении является двухмерной, но не прямоугольной. В качестве примера можно привести массив месяцев, каждый элемент которого представляет собой массив дней. Поскольку число дней в разных месяцах отличается, элементы не образуют прямоугольный двухмерный массив. В этом случае можно использовать массив массивов вместо многомерного массива.

Объявление массива

Переменная массива объявляется так же, как любая другая переменная, с помощью инструкции Dim. За именем переменой следуют одна или более пар скобок, показывающие, что это массив,а не скаляр (переменная, содержащая одно значение).

Для объявления переменной одномерного массива добавьте одну пару скобок после имени переменной:

Dim cargoWeights() As Double

Для объявления переменной многомерного массива добавьте одну пару скобок после имени переменной, внутри скобок расположите запятые, разделяющие измерения массива:

Dim atmospherePressures(,,,) As Short

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

Dim inquiriesByYearMonthDay()()() As Byte

 

В предыдущих примерах объявляются переменные массива, но массивы им не присваиваются. По-прежнему необходимо создать массив, инициализировать его и присвоить его переменной.

Создание массива

Массив можно создать двумя способами. Можно указать размер массива после его объявления или, так как массив является объектом, можно создать его с предложением Оператор New (Visual Basic) и присвоить его переменной массива. Можно выполнить это в рамках объявления массива или в последующей инструкции назначения, как показано в следующем примере:

cargoWeights = New Double() {}

atmospherePressures = New Short(,,,) {}

inquiriesByYearMonthDay = New Byte()()() {}

После выполнения этих операторов массивы имеют нулевую длину.

Размер массива можно задать несколькими способами. Можно указать размер при объявлении массива, как показано в следующем примере:

Dim cargoWeights(10) As Double

Dim atmospherePressures(2, 2, 4, 10) As Short

Dim inquiriesByYearMonthDay(20)()() As Byte

Также можно указать размер массива при создании с помощью предложения New, как показано в следующем примере:

cargoWeights = New Double(10) {}

atmospherePressures = New Short(2, 2, 4, 10) {}

inquiriesByYearMonthDay = New Byte(20)()() {}

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


' Assign a new array size and retain the current element values.

ReDim Preserve cargoWeights(20)

' Assign a new array size and retain only the first five element values.

ReDim Preserve cargoWeights(4)

' Assign a new array size and discard all current element values.

ReDim cargoWeights(15)

 

Заполнение массива начальными значениями

Можно создать массив, содержащий начальный набор значений, с помощью литерала массива. Литерал массива состоит из списка разделенных запятыми значений, заключенных в фигурные скобки ({}).При создании массива с помощью литерала массива можно либо указать тип массива, либо использовать вывод типа для определения типа массива. Оба способа иллюстрирует следующий код.

Dim numbers = New Integer() {1, 2, 4, 8}

Dim doubles = {1.5, 2, 9.9, 18}

При использовании вывода типа тип массива определяется главным типом списка значений, предоставленного для литерала массива. Главный тип — это уникальный тип, до которого могут быть расширены все другие типы литерала массива. Если такой уникальный тип нельзя определить, то главным типом будет тип, до которого можно сузить все другие типы массива. Если ни один из указанных уникальных типов нельзя определить, главным типом будет Object. Например, если список значений для литерала массива содержит значения типовInteger, Long и Double, результирующий массив будет иметь тип Double. Типы Integer и Long расширяются до типа Double и только Double. Поэтому Double является главным типом. Данные правила вывода применимы для вывода типов массивов, которые являются локальными переменными, определенными в элементе класса. Несмотря на то что можно использовать литералы массива при создании переменных уровня класса, нельзя использовать вывод типа на уровне класса. В результате литералы массива, заданные на уровне класса, определяют значения, указанные для литерала массива, как тип Object.

Можно явно задать тип элементов в массиве, созданном с помощью литерала массива. В таком случае значения литерала массива должны расширяться до типа элементов массива. В следующем примере кода создается массив типа Double из списка целых чисел.

Dim values As Double() = {1, 2, 3, 4, 5, 6}

Сохранение значений в массиве

К любому местоположению в массиве можно получить доступ, используя индекс типа Integer. Можно сохранять и извлекать значения массива, ссылаясь на местоположение в массиве с помощью индекса места, приведенного в скобках. Индексы для многомерных массивов разделяются запятыми (,). Для каждого измерения массива требуется отдельный индекс. В следующем примере показаны некоторые операторы, которые сохраняют значения в массивах.

Dim i = 4

Dim j = 2

Dim numbers(10) As Integer

Dim matrix(5, 5) As Double

numbers(i + 1) = 0

matrix(3, j * 2) = j

В следующем примере показаны некоторые операторы, которые получают значения из массивов.

Dim v = 2

Dim i = 1

Dim j = 1

Dim k = 1

Dim wTotal As Double = 0.0

Dim sortedValues(5), rawValues(5), estimates(2, 2, 2) As Double

Dim lowestValue = sortedValues(0)

wTotal += (rawValues(v) ^ 2)

Dim firstGuess = estimates(i, j, k)

Размер массива

Размер массива является произведением длин всех его измерений. Он представляет собой общее число элементов, в данный момент содержащихся в массиве. В следующем примере показано объявление трехмерного массива:

Dim prices(3, 4, 5) As Long

Общий размер массива в переменной prices составляет (3 + 1) x (4 + 1) x (5 + 1) = 120.

Размер массива можно определить с помощью свойства Length. Длину каждого измерения многомерного массива можно получить с помощью метода GetLength.

Можно изменять размер переменной массива, присваивая ей новый объект массива, или с помощью оператора ReDim.

 

 

 

 

 

 

 

 

 

Интерфейсы (Visual Basic)

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

Объявление интерфейсов

Определения интерфейсов находятся между операторами Interface и End Interface. После оператора Interface можно добавить необязательный оператор Inherits, в котором представлен один или несколько наследуемых интерфейсов. Оператор Inherits предшествуют всем другим операторам в объявлении за исключением комментариев. Остальные операторы в определении интерфейса должны быть следующими: Event, Sub, Function, Property, Interface, Class, Structure и Enum. В интерфейсах не содержатся коды реализаций или операторы, связанные с кодом реализации, такие как End Sub или End Property.

В пространстве имен операторы интерфейса по умолчанию Friend, но также их можно явно объявить как Public или Friend. Интерфейсы, определенные в классах, модули, интерфейсы и структуры являются Public по умолчанию, но также их можно объявить явно как Public, FriendProtected или Private.

 

 

 

 

 

 

Visual J#

Visual J# — созданная фирмой Майкрософт для платформы .NET Framework интегрированная среда разработки на Java-подобном языке. Особо следует подчеркнуть, что язык среды Visual J# не является языком Java, он лишь обеспечивает Java-подобный синтаксис и мнемонику. Это и подчеркивается названием J# (J Sharp).

Среда Visual J# не нуждается для своей работы (для компиляции программ) в наличии Sun JDK, и генерирует код, предназначенный для выполнения не в среде Java — JRE, а в исполняющей среде .NET Framework CLR. Генерировать программы, предназначенные для выполнения в среде «голого» Win32 (т.е. не на платформе .NET) Visual J#, в отличие от предыдущей Java-подобной среды Microsoft — Visual J++, не может.

Программы, созданные в среде Visual J#, не могут работать на «голом» .NET CLR, им требуется для выполнения дополнительная runtime-библиотека, предоставляющая ещё один уровень абстракции, лежащий между .NET CLR и программой на J# — так называемый Visual J# Redistributable.

Заявленной целью разработки Visual J# было облегчение перехода разработчиков на Java с платформы Java на платформу .NET Framework. Однако эта цель достигнута не была по ряду причин, прежде всего из-за неполной совместимости J# с Java. Тем разработчикам на Java, которые всё же решили перейти на платформу .NET, оказалось в большинстве случаев проще изучить C# или Managed C++ и начать писать на нём, чем изучать отличия J# от Java и привыкать к нему. По этой причине Visual J# широкой популярности не получил.

Microsoft Visual C++ (MSVC)

Microsoft Visual C++ (MSVC) — интегрированная среда разработки приложений на языке C++, разработанная фирмой Microsoft и поставляемая либо как часть комплекта Microsoft Visual Studio, либо отдельно в виде функционально ограниченного комплекта Visual C++ Express Edition.

 

Visual C++

Visual C++ .NET поддерживает разработку приложений как на Managed C++, так и на обычном (неуправляемом) C++, и тем самым позволяет генерировать код как для платформы .NET Framework, так и для исполнения в среде «чистой» Windows. В этом отношении Visual C++ .NET является уникальным среди других языковых средств, предоставляемых средой Visual Studio, поскольку ни Visual Basic .NET, ни Visual J# не способны генерировать код для чистого Win32, в отличие от предыдущих версий (Visual Basic и Visual J++ соответственно).

XML В MS Visual Studio

Создание XML

Создать XML-деревья в Visual Basic можно двумя способами. Можно объявить XML-литерал непосредственно в коде или использовать API LINQ для создания дерева. Оба процесса позволяют отразить в коде заключительную структуру XML-дерева. Например, с помощью приведенного ниже кода создается XML-элемент:

Dim contact1 As XElement =

    <contact>

      <name>Patrick Hines</name>

      <phone type="home">206-555-0144</phone>

      <phone type="work">425-555-0145</phone>

    </contact>

 

 

 

Доступ и переходы в XML

Visual Basic предоставляет свойства осей XML для доступа к структурам XML и перемещения по ним. С помощью этих свойств можно получить доступ к XML-элементам и атрибутам, указывая имена дочерних XML-элементов. Можно также явно вызывать методы LINQ для выполнения переходов и поиска элементов и атрибутов. Например, в приведенном ниже коде свойства осей XML используются для ссылки на атрибуты и дочерние элементы XML-элемента. В примере кода используется запрос LINQ для извлечения дочерних элементов и вывода их в виде XML-элементов, эффективно выполняя преобразование.

' Place Imports statements at the top of your program. 

Imports <xmlns:ns="http://SomeNamespace">

Module Sample1

    Sub SampleTransform()

        ' Create test by using a global XML namespace prefix.

        Dim contact =

            <ns:contact>

                <ns:name>Patrick Hines</ns:name>

                <ns:phone ns:type="home">206-555-0144</ns:phone>

                <ns:phone ns:type="work">425-555-0145</ns:phone>

            </ns:contact>

        Dim phoneTypes =

          <phoneTypes>

              <%= From phone In contact.<ns:phone>

                  Select <type><%= phone.@ns:type %></type>

              %>

          </phoneTypes>

        Console.WriteLine(phoneTypes)

    End Sub

End Module

Пространства имен XML

Visual Basic позволяет указать псевдоним для глобального пространства имен XML, используя оператор Imports. В следующем примере показано, как использовать оператор Imports для импорта пространства имен XML:

Imports <xmlns:ns="http://someNamespace">

Использование пространств имен XML в XML-литералах

В следующем примере показано, как создать объект XElement, в котором используется глобальное пространство имен ns:

Dim contact1 As XElement =

    <ns:contact>

        <ns:name>Patrick Hines</ns:name>

        <ns:phone type="home">206-555-0144</ns:phone>

        <ns:phone type="work">425-555-0145</ns:phone>

    </ns:contact>

Console.WriteLine(contact1)

Компилятор Visual Basic переводит XML-литералы, содержащие псевдонимы пространства имен XML, в эквивалентный код, содержащий XML-представление для использования пространств имен XML, с атрибутом xmlns. При компиляции код примера из предыдущего раздела формирует по существу тот же самый исполняемый код, как и в следующем примере:

Dim contact2 As XElement =

    <ns1:contact xmlns:ns1="http://someNamespace">

        <ns1:name>Patrick Hines</ns1:name>

        <ns1:phone type="home">206-555-0144</ns1:phone>

        <ns1:phone type="work">425-555-0145</ns1:phone>

    </ns1:contact>

 

Console.WriteLine(contact2)

Использование пространств имен XML в свойствах осей XML

Пространства имен, объявленные в XML-литералах, недоступны для использования в свойствах осей XML. Однако глобальные пространства имен могут использоваться со свойствами осей XML. Используйте двоеточие для отделения префикса пространства имен XML от имени локального элемента. Например:

Console.WriteLine("Contact name is: " & contact1.<ns:name>.Value)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



Microsoft Visual Studio