C# dim программирование

Части

  • attributelist Необязательный. См .Список Атрибутов.
  • accessmodifier Необязательный. Это может быть одно из следующих действий: См .Раздел Уровни доступа в Visual Basic.
  • Shared Необязательный. См .Раздел доступ
  • Shadows

    Необязательный. Видеть Тени.

  • Static

    Необязательный. См .Статику.

  • ReadOnly

    Необязательный. См .Раздел

  • WithEvents

    Необязательный. Указывает, что это объектные переменные, ссылающиеся на экземпляры класса. Которые могут вызывать события. Смотрите WithEvents.

  • variablelist

    Требуемый. Список переменных, объявленных в этом операторе.

    variable [ , variable ... ]

    Каждый variableиз них имеет следующий синтаксис и части:

    variablename [ ( [ boundslist ] ) ] [ As [ New ] datatype [ With{[ .propertyname = propinitializer [ . ... ] ] } ] ] [ = initializer ]

Компилятор Visual Basic использует Dimинструкцию для определения типа данных переменной и другой информации, например. Какой код может получить доступ к переменной. В следующем примере объявляется переменная для хранения Integerзначения.

Dim numberOfStudents As Integer 

Вы можете указать любой тип данных или имя перечисления, структуры. Класса или интерфейса.

Dim finished As Boolean Dim monitorBox As System.Windows.Forms.Form 

Для ссылочного типа ключевое слово используется

Newдля создания нового экземпляра класса или структуры, заданного типом данных. Если вы используете New, вы не используете выражение инициализатора. Вместо этого вы предоставляете аргументы, если они требуются, конструктору класса. Из которого вы создаете переменную.

Dim bottomLabel As New System.Windows.Forms.Label 

Вы можете объявить переменную в процедуре, блоке, классе. Структуре или модуле. Вы не можете объявить переменную в исходном файле, пространстве имен или интерфейсе. Дополнительные сведения см. в разделе Контексты объявлений и Уровни доступа по умолчанию

.

Переменная, объявленная на уровне модуля вне любой процедуры. Является переменной-членом или полем. Переменные-члены находятся в области действия во всем своем классе. Структуре или модуле. Переменная, объявленная на уровне процедуры. Является локальной переменной. Локальные переменные находятся в области действия только в пределах своей процедуры или блока.

Для объявления переменных вне процедуры используются следующие модификаторы доступа: Public, Protected, Friend,Protected Friend, и Private. Дополнительные сведения см. в разделе Уровни доступа в Visual Basic

.

DimКлючевое слово является необязательным и обычно опускается. Если вы указываете любой из следующих модификаторов: Public, Protected, Friend, Protected Friend, Private, Shared, Shadows, Static, ReadOnly, или WithEvents.

Public maximumAllowed As Double Protected Friend currentUserName As String Private salary As Decimal Static runningTotal As Integer 

Если Option Explicitвключено (по умолчанию). Компилятор требует объявления для каждой используемой переменной. Дополнительные сведения см. в разделе Оператор Option Explicit.

Указание начального значения

Вы можете присвоить значение переменной при ее создании.

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

Dim quantity As Integer = 10 Dim message As String = "Just started" 

Если указан инициализатор и тип данных не указан в Asпредложении, вывод типа используется для вывода типа данных из инициализатора. В следующем примере оба num1и num2строго типизированы как целые числа. Во втором объявлении вывод типа выводит тип из значения 3.

' Use explicit typing. Dim num1 As Integer = 3 ' Use local type inference. Dim num2 = 3 

Вывод типа применяется на уровне процедуры. Он не применяется вне процедуры в классе. Структуре, модуле или интерфейсе. Дополнительные сведения о выводе типов см. в разделах Оператор Option Infer и Вывод локального типа.

Дополнительные сведения о том, что происходит. Когда тип данных или инициализатор не указан. См. в разделе Типы данных и значения по умолчанию далее в этом разделе.

Инициализатор объекта можно использовать для объявления экземпляров именованных и анонимных типов. Следующий код создает экземпляр Studentкласса и использует инициализатор объекта для инициализации свойств.

Dim student1 As New Student With {.First = "Michael", .Last = "Tucker"} 

Дополнительные сведения об инициализаторах объектов см. в разделе Практическое руководство. Объявление объекта с помощью инициализатора объекта, Инициализаторы объектов: Именованные и анонимные типыи Анонимные типы.

Объявление нескольких переменных

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

Dim lastTime, nextTime. AllTimes() As Date 

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

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

Dim a, b, c As Single, x, y As Double, i As Integer ' a. Bc are all Single; x and y are both Double 

Массивы

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

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

Следующие два утверждения эквивалентны. Каждый оператор объявляет массив из 21 Integerэлемента. Когда вы обращаетесь к массиву, индекс может варьироваться от 0 до 20.

Dim totals(20) As Integer Dim totals(0 To 20) As Integer 

Следующий оператор объявляет двумерный массив типа Double. Массив имеет 4 строки (3 + 1) из 6 столбцов (5 + 1) каждый. Обратите внимание. Что верхняя граница представляет собой максимально возможное значение индекса. А не длину измерения. Длина измерения-это верхняя граница плюс единица.

Dim matrix2(3, 5) As Double 

Массив может иметь от 1 до 32 измерений.

Вы можете оставить все границы пустыми в объявлении массива. Если вы сделаете это, массив будет иметь указанное вами число измерений. Но он неинициализирован. Он имеет значение Nothingдо тех пор. Пока вы не инициализируете хотя бы некоторые из его элементов. DimОператор должен указывать границы либо для всех измерений. Либо для отсутствия измерений.

' Declare an array with blank array bounds. Dim messages() As String ' Initialize the array. ReDim messages(4) 

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

Dim oneDimension(), twoDimensions(,). ThreeDimensions(,,) As Byte 

Вы можете объявить массив нулевой длины, объявив одно из измерений массива равным -1. Переменная, содержащая массив нулевой длины, не имеет этого значения Nothing. Массивы нулевой длины требуются некоторыми общеязыковыми функциями времени выполнения. Если вы попытаетесь получить доступ к такому массиву. Произойдет исключение времени выполнения. Дополнительные сведения см. в разделе Массивы.

Вы можете инициализировать значения массива с помощью литерала массива. Для этого окружите значения инициализации фигурными скобками ({}).

Dim longArray() As Long = {0, 1, 2, 3} 

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

Dim twoDimensions(,) As Integer = {{0, 1, 2}, {10, 11, 12}} 

Дополнительные сведения о литералах массива см. в разделе Массивы.

Типы и значения данных по умолчанию

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

Если указать тип данных, но не указать инициализатор. Visual Basic инициализирует переменную до значения по умолчанию для ее типа данных. В следующей таблице показаны значения инициализации по умолчанию.

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

Время жизни статической локальной переменной

Время Staticжизни локальной переменной больше, чем у процедуры. В которой она объявлена. Границы времени жизни переменной зависят от того. Где объявлена процедура и является ли она таковой Shared.

Атрибуты и модификаторы

Атрибуты можно применять только к переменным-членам, но не к локальным переменным. Атрибут вносит информацию в метаданные сборки. Которая не имеет смысла для временного хранения. Такого как локальные переменные.

На уровне модуля модификатор нельзя использовать Staticдля объявления переменных-членов. На уровне процедуры нельзя использоватьSharedShadows,ReadOnly, WithEvents, или любые модификаторы доступа для объявления локальных переменных.

Вы можете указать, какой код может получить доступ к переменной. Предоставив an accessmodifier. Переменные-члены класса и модуля (вне любой процедуры) по умолчанию имеют закрытый доступ. А переменные-члены структуры-открытый доступ. Вы можете настроить их уровни доступа с помощью модификаторов доступа. Модификаторы доступа нельзя использовать для локальных переменных (внутри процедуры).

Вы можете указать WithEventsтолько переменные-члены. Но не локальные переменные внутри процедуры. Если вы укажете WithEvents, то тип данных переменной должен быть определенным типом класса. А не Objectего типом . Вы не можете объявить массив с WithEventsпомощью . Дополнительные сведения о событиях см. в разделе События.

Примечание

Код вне класса. Структуры или модуля должен соответствовать имени переменной-члена с именем этого класса. Структуры или модуля. Код вне процедуры или блока не может ссылаться на какие-либо локальные переменные внутри этой процедуры или блока.

Высвобождение управляемых ресурсов

Сборщик мусора .NET Framework избавляется от управляемых ресурсов без какого-либо дополнительного кодирования с вашей стороны. Однако вы можете принудительно избавиться от управляемого ресурса вместо того. Чтобы ждать сборщика мусора.

Если класс удерживает особенно ценный и дефицитный ресурс (например. Соединение с базой данных или дескриптор файла). Вы, возможно. Не захотите ждать следующей сборки мусора. Чтобы очистить экземпляр класса. Который больше не используется. Класс может реализовать интерфейс IDisposable, чтобы обеспечить способ освобождения ресурсов перед сборкой мусора. Класс, реализующий этот интерфейс, предоставляет Disposeметод. Который может быть вызван для принудительного немедленного высвобождения ценных ресурсов.

UsingОператор автоматизирует процесс получения ресурса. Выполнения набора операторов. А затем избавления от ресурса. Однако ресурс должен реализовать интерфейс IDisposable. Дополнительные сведения см. в разделе Использование оператора.

Пример

В следующем примере переменные объявляются с помощью Dimоператора с различными опциями.

' Declare and initialize a Long variable. Dim startingAmount As Long = 500 ' Declare a variable that refers to a Button object. ' create a Button object. And assign the Button object ' to the variable. Dim switchButton As New System.Windows.Forms.Button ' Declare a local variable that always retains its value. ' even after its procedure returns to the calling code. Static totalSales As Double ' Declare a variable that refers to an array. Dim highTemperature(31) As Integer ' Declare and initialize an array variable that ' holds four Boolean check values. Dim checkValues() As Boolean = {False, False, True, False} 

Пример

В следующем примере перечислены простые числа от 1 до 30. Область действия локальных переменных описана в комментариях к коду.

Public Sub ListPrimes() ' The sb variable can be accessed only ' within the ListPrimes procedure. Dim sb As New System.Text.StringBuilder() ' The number variable can be accessed only ' within the For...Next block. A different ' variable with the same name could be declared ' outside of the For...Next block. For number As Integer = 1 To 30 If CheckIfPrime(number) = True Then sb.Append(number.ToString & " ") End If Next Debug.WriteLine(sb.ToString) ' Output: 2 3 5 7 11 13 17 19 23 29 End Sub Private Function CheckIfPrime(ByVal number As Integer) As Boolean If number 

Пример

В следующем примере speedValueпеременная объявляется на уровне класса. PrivateКлючевое слово используется для объявления переменной. Переменная может быть доступна любой процедурой в Carклассе.

' Create a new instance of a Car. Dim theCar As New Car() theCar.Accelerate(30) theCar.Accelerate(20) theCar.Accelerate(-5) Debug.WriteLine(theCar.Speed.ToString) ' Output: 45 
Public Class Car ' The speedValue variable can be accessed by ' any procedure in the Car class. Private speedValue As Integer = 0 Public ReadOnly Property Speed() As Integer Get Return speedValue End Get End Property Public Sub Accelerate(ByVal speedIncrease As Integer) speedValue += speedIncrease End Sub End Class 

Смотрите также