Функции в visual basic: Функции — Visual Basic | Microsoft Docs
процедуры функций — Visual Basic
-
- Чтение занимает 2 мин
В этой статье
Function
Процедура — это последовательность инструкций Visual Basic, заключенных в Function
операторы и End Function
.A Function
procedure is a series of Visual Basic statements enclosed by the Function
and End Function
statements. Function
Процедура выполняет задачу, а затем возвращает управление вызывающему коду.The Function
procedure performs a task and then returns control to the calling code. Когда он возвращает управление, он также возвращает значение в вызывающий код.When it returns control, it also returns a value to the calling code.
При каждом вызове процедуры ее инструкции выполняются, начиная с первого исполняемого оператора после Function
инструкции и заканчивая первой End Function
Exit Function
Return
инструкцией, или.Each time the procedure is called, its statements run, starting with the first executable statement after the Function
statement and ending with the first End Function
, Exit Function
, or Return
statement encountered.
Процедуру можно определить Function
в модуле, классе или структуре.You can define a Function
procedure in a module, class, or structure. Public
По умолчанию это означает, что вы можете вызывать его из любого места в приложении, которое имеет доступ к модулю, классу или структуре, в которой он определен.It is Public
by default, which means you can call it from anywhere in your application that has access to the module, class, or structure in which you defined it.
Function
Процедура может принимать аргументы, такие как константы, переменные или выражения, которые передаются в него вызывающим кодом.A Function
procedure can take arguments, such as constants, variables, or expressions, which are passed to it by the calling code.
Синтаксис объявленияDeclaration syntax
Синтаксис для объявления Function
процедуры выглядит следующим образом:The syntax for declaring a Function
procedure is as follows:
[Modifiers] Function FunctionName [(ParameterList)] As ReturnType
[Statements]
End Function
Модификаторы могут указывать уровень доступа и сведения о перегрузке, переопределении, совместном использовании и затенении.The modifiers can specify access level and information regarding overloading, overriding, sharing, and shadowing. Дополнительные сведения см. в разделе оператор Function.For more information, see Function Statement.
Каждый параметр объявляется так же, как и для процедур подраздела.You declare each parameter the same way you do for Sub Procedures.
Тип данныхData type
Каждая Function
процедура имеет тип данных, точно так же, как и каждая переменная.Every Function
procedure has a data type, just as every variable does. Этот тип данных указывается As
предложением в Function
операторе и определяет тип данных значения, возвращаемого функцией в вызывающий код.This data type is specified by the As
clause in the Function
statement, and it determines the data type of the value the function returns to the calling code. Это показано в приведенных ниже примерах объявлений.The following sample declarations illustrate this.
Function Yesterday() As Date
End Function
Function FindSqrt(radicand As Single) As Single
End Function
Дополнительные сведения см. в разделе «части» в операторе Function.For more information, see «Parts» in Function Statement.
Возвращаемые значенияReturning values
Значение, которое Function
процедура отправляет обратно вызывающему коду, называется его возвращаемым значением.The value a Function
procedure sends back to the calling code is called its return value. Процедура возвращает это значение одним из двух способов:The procedure returns this value in one of two ways:
Он использует
Return
инструкцию для указания возвращаемого значения и немедленно возвращает управление вызывающей программе.It uses theReturn
statement to specify the return value, and returns control immediately to the calling program. Это показано в следующем примере.The following example illustrates this.Function FunctionName [(ParameterList)] As ReturnType ' The following statement immediately transfers control back ' to the calling code and returns the value of Expression. Return Expression End Function
Он присваивает значение имени своей функции в одной или нескольких инструкциях процедуры.It assigns a value to its own function name in one or more statements of the procedure. Управление не возвращается вызывающей программе до тех пор,
Exit Function
покаEnd Function
не будет выполнен оператор или.Control does not return to the calling program until anExit Function
orEnd Function
statement is executed. Это показано в следующем примере.The following example illustrates this.Function FunctionName [(ParameterList)] As ReturnType ' The following statement does not transfer control back to the calling code. FunctionName = Expression ' When control returns to the calling code, Expression is the return value. End Function
Преимуществом присвоения возвращаемого значения имени функции является то, что Управление не возвращается из процедуры до тех пор, пока не встретится Exit Function
End Function
оператор или.The advantage of assigning the return value to the function name is that control does not return from the procedure until it encounters an Exit Function
or End Function
statement. Это позволяет назначить предварительное значение и позже при необходимости изменить его.This allows you to assign a preliminary value and adjust it later if necessary.
Дополнительные сведения о возвращаемых значениях см. в разделе оператор Function.For more information about returning values, see Function Statement. Дополнительные сведения о возврате массивов см. в разделе массивы.For information about returning arrays, see Arrays.
Синтаксис вызоваCalling syntax
Процедура вызывается Function
путем включения ее имени и аргументов в правой части оператора присваивания или в выражении.You invoke a Function
procedure by including its name and arguments either on the right side of an assignment statement or in an expression. Необходимо указать значения для всех аргументов, которые не являются необязательными, и необходимо заключить список аргументов в круглые скобки.You must provide values for all arguments that are not optional, and you must enclose the argument list in parentheses. Если аргументы не указаны, можно дополнительно опустить круглые скобки.If no arguments are supplied, you can optionally omit the parentheses.
Синтаксис для вызова процедуры выглядит следующим образом Function
.The syntax for a call to a Function
procedure is as follows.
lvalue =
FunctionName [(
ArgumentList )]
lvalue =
functionname [(
argumentlist )]
If ((
FunctionName [(
ArgumentList )] / 3) <=
выражение ) Then
If ((
functionname [(
argumentlist )] / 3) <=
expression ) Then
При вызове Function
процедуры не нужно использовать ее возвращаемое значение.When you call a Function
procedure, you do not have to use its return value. В противном случае выполняются все действия функции, но возвращаемое значение игнорируется.If you do not, all the actions of the function are performed, but the return value is ignored. MsgBoxчасто вызывается подобным образом.MsgBox is often called in this manner.
Иллюстрация объявления и вызоваIllustration of declaration and call
Следующая Function
процедура вычисляет самую длинную сторону (гипотенузу) правого треугольника, учитывая значения двух других сторон.The following Function
procedure calculates the longest side, or hypotenuse, of a right triangle, given the values for the other two sides.
Function Hypotenuse(side1 As Double, side2 As Double) As Double
Return Math.Sqrt((side1 ^ 2) + (side2 ^ 2))
End Function
В следующем примере показан типичный вызов метода hypotenuse
.The following example shows a typical call to hypotenuse
.
Dim testLength, testHypotenuse As Double
testHypotenuse = Hypotenuse(testLength, 10.7)
См. также разделSee also
Оператор Function — Visual Basic
-
- Чтение занимает 6 мин
В этой статье
Объявляет имя, параметры и код, определяющие Function
процедуру.Declares the name, parameters, and code that define a Function
procedure.
СинтаксисSyntax
[ <attributelist> ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ] [ Async | Iterator ]
Function name [ (Of typeparamlist) ] [ (parameterlist) ] [ As returntype ] [ Implements implementslist | Handles eventlist ]
[ statements ]
[ Exit Function ]
[ statements ]
End Function
КомпонентыParts
attributelist
Необязательный элемент.Optional. См. список атрибутов.See Attribute List.
accessmodifier
Необязательный элемент.Optional. Может принимать следующие значения:Can be one of the following:
См. раздел уровни доступа в Visual Basic.See Access levels in Visual Basic.
proceduremodifiers
Необязательный элемент.Optional. Может принимать следующие значения:Can be one of the following:
Shared
Необязательный элемент.Optional. См. раздел Shared.See Shared.
Shadows
Необязательный элемент.Optional. См. раздел Shadows.See Shadows.
Async
Необязательный элемент.Optional. См. статью Async.See Async.
Iterator
Необязательный элемент.Optional. См. итератор.See Iterator.
name
Обязательный.Required. Имя процедуры.Name of the procedure. См. раздел Declared Element Names.See Declared Element Names.
typeparamlist
Необязательный элемент.Optional. Список параметров типа для универсальной процедуры.List of type parameters for a generic procedure. См. список типов.See Type List.
parameterlist
Необязательный элемент.Optional. Список имен локальных переменных, представляющих параметры этой процедуры.List of local variable names representing the parameters of this procedure. См. список параметров.See Parameter List.
returntype
Обязательный
Option Strict
, если имеет значениеOn
.Required ifOption Strict
isOn
. Тип данных значения, возвращаемого этой процедурой.Data type of the value returned by this procedure.Implements
Необязательный элемент.Optional. Указывает, что эта процедура реализует одну или несколько
Function
процедур, каждая из которых определена в интерфейсе, реализованном классом или структурой этой процедуры.Indicates that this procedure implements one or moreFunction
procedures, each one defined in an interface implemented by this procedure’s containing class or structure. См. инструкцию Implements.See Implements Statement.implementslist
Является обязательным, если предоставлен параметр
Implements
.Required ifImplements
is supplied. Список реализуемых процедурFunction
.List ofFunction
procedures being implemented.implementedprocedure [ , implementedprocedure ... ]
Каждый элемент
implementedprocedure
имеет перечисленные ниже синтаксис и компоненты.Eachimplementedprocedure
has the following syntax and parts:interface.definedname
ЧастьPart ОписаниеDescription interface
Обязательный.Required. Имя интерфейса, реализованного классом или структурой, содержащейся в этой процедуре.Name of an interface implemented by this procedure’s containing class or structure. definedname
Обязательный.Required. Имя, под которым процедура определена в interface
.Name by which the procedure is defined ininterface
.Handles
Необязательный элемент.Optional. Указывает, что эта процедура может управлять одним или несколькими конкретными событиями.Indicates that this procedure can handle one or more specific events. См. раздел Handles.See Handles.
eventlist
Является обязательным, если предоставлен параметр
Handles
.Required ifHandles
is supplied. Список событий, обрабатываемых этой процедурой.List of events this procedure handles.eventspecifier [ , eventspecifier ... ]
Каждый элемент
eventspecifier
имеет перечисленные ниже синтаксис и компоненты.Eacheventspecifier
has the following syntax and parts:eventvariable.event
ЧастьPart ОписаниеDescription eventvariable
Обязательный.Required. Объектная переменная, объявленная с типом данных класса или структуры, которая вызывает событие.Object variable declared with the data type of the class or structure that raises the event. event
Обязательный.Required. Имя события, обрабатываемого этой процедурой.Name of the event this procedure handles. statements
Необязательный элемент.Optional. Блок инструкций для выполнения в рамках этой процедуры.Block of statements to be executed within this procedure.
End Function
Завершает определение этой процедуры.Terminates the definition of this procedure.
КомментарииRemarks
Весь исполняемый код должен находиться внутри процедуры.All executable code must be inside a procedure. Каждая процедура, в свою очередь, объявляется в классе, структуре или модуле, который называется содержащим классом, структурой или модулем.Each procedure, in turn, is declared within a class, a structure, or a module that is referred to as the containing class, structure, or module.
Чтобы вернуть значение в вызывающий код, используйте Function
процедуру; в противном случае используйте Sub
процедуру.To return a value to the calling code, use a Function
procedure; otherwise, use a Sub
procedure.
Определение функцииDefining a Function
Процедуру можно определить Function
только на уровне модуля.You can define a Function
procedure only at the module level. Таким образом, контекст объявления для функции должен быть классом, структурой, модулем или интерфейсом и не может быть исходным файлом, пространством имен, процедурой или блоком.Therefore, the declaration context for a function must be a class, a structure, a module, or an interface and can’t be a source file, a namespace, a procedure, or a block. Дополнительные сведения см. в разделе Контексты объявления и уровни доступа по умолчанию.For more information, see Declaration Contexts and Default Access Levels.
Function
процедуры по умолчанию имеют открытый доступ.Function
procedures default to public access. Уровни доступа можно изменить с помощью модификаторов доступа.You can adjust their access levels with the access modifiers.
Function
Процедура может объявлять тип данных возвращаемого процедурой значения.A Function
procedure can declare the data type of the value that the procedure returns. Можно указать любой тип данных или имя перечисления, структуру, класс или интерфейс.You can specify any data type or the name of an enumeration, a structure, a class, or an interface. Если параметр не указан returntype
, процедура возвращает Object
.If you don’t specify the returntype
parameter, the procedure returns Object
.
Если в этой процедуре используется Implements
ключевое слово, содержащий класс или структуру также должны иметь Implements
оператор, который сразу следует Class
за Structure
оператором или.If this procedure uses the Implements
keyword, the containing class or structure must also have an Implements
statement that immediately follows its Class
or Structure
statement. Implements
Инструкция должна включать каждый интерфейс, указанный в implementslist
.The Implements
statement must include each interface that’s specified in implementslist
. Однако имя, по которому интерфейс определяет Function
(в definedname
), не обязательно должно совпадать с именем этой процедуры (в name
).However, the name by which an interface defines the Function
(in definedname
) doesn’t need to match the name of this procedure (in name
).
Возврат из функцииReturning from a Function
Когда Function
процедура возвращается в вызывающий код, выполнение переходит к инструкции, следующей за инструкцией, вызвавшей процедуру.When the Function
procedure returns to the calling code, execution continues with the statement that follows the statement that called the procedure.
Чтобы вернуть значение из функции, можно либо присвоить значение имени функции, либо включить его в Return
инструкцию.To return a value from a function, you can either assign the value to the function name or include it in a Return
statement.
Return
Оператор одновременно назначает возвращаемое значение и завершает функцию, как показано в следующем примере.The Return
statement simultaneously assigns the return value and exits the function, as the following example shows.
Function MyFunction(ByVal j As Integer) As Double
Return 3.87 * j
End Function
В следующем примере возвращаемое значение присваивается имени функции myFunction
, а затем используется Exit Function
оператор для возврата.The following example assigns the return value to the function name myFunction
and then uses the Exit Function
statement to return.
Function MyFunction(ByVal j As Integer) As Double
MyFunction = 3.87 * j
Exit Function
End Function
Exit Function
Операторы и Return
вызывают немедленный выход из Function
процедуры.The Exit Function
and Return
statements cause an immediate exit from a Function
procedure. Любое количество Exit Function
инструкций и Return
может использоваться в любом месте процедуры, и можно смешивать Exit Function
Return
операторы и.Any number of Exit Function
and Return
statements can appear anywhere in the procedure, and you can mix Exit Function
and Return
statements.
Если вы используете Exit Function
без присвоения значения name
, процедура возвращает значение по умолчанию для типа данных, указанного в параметре returntype
.If you use Exit Function
without assigning a value to name
, the procedure returns the default value for the data type that’s specified in returntype
. Если параметр returntype
не указан, процедура возвращает Nothing
значение, которое является значением по умолчанию для Object
.If returntype
isn’t specified, the procedure returns Nothing
, which is the default value for Object
.
Вызов функцииCalling a Function
Процедура вызывается с Function
использованием имени процедуры, за которым следует список аргументов в выражении в круглых скобках.You call a Function
procedure by using the procedure name, followed by the argument list in parentheses, in an expression. Скобки можно опустить, только если вы не предоставляете никаких аргументов.You can omit the parentheses only if you aren’t supplying any arguments. Однако код является более удобочитаемым, если всегда включать круглые скобки.However, your code is more readable if you always include the parentheses.
Процедура вызывается Function
так же, как и любая библиотечная функция, такая как Sqrt
, Cos
или ChrW
.You call a Function
procedure the same way that you call any library function such as Sqrt
, Cos
, or ChrW
.
Функцию можно также вызвать с помощью Call
ключевого слова.You can also call a function by using the Call
keyword. В этом случае возвращаемое значение игнорируется.In that case, the return value is ignored. Call
В большинстве случаев использование ключевого слова не рекомендуется.Use of the Call
keyword isn’t recommended in most cases. Дополнительные сведения см. в разделе оператор Call.For more information, see Call Statement.
Visual Basic иногда переупорядочивает арифметические выражения для повышения внутренней эффективности.Visual Basic sometimes rearranges arithmetic expressions to increase internal efficiency. По этой причине не следует использовать Function
процедуру в арифметическом выражении, если функция изменяет значение переменных в том же выражении.For that reason, you shouldn’t use a Function
procedure in an arithmetic expression when the function changes the value of variables in the same expression.
Асинхронные функцииAsync Functions
Функция Async позволяет вызывать асинхронные функции без использования явных обратных вызовов или вручную разделять код между несколькими функциями или лямбда-выражениями.The Async feature allows you to invoke asynchronous functions without using explicit callbacks or manually splitting your code across multiple functions or lambda expressions.
Если вы помечаете функцию модификатором Async , то можете использовать оператор await в функции.If you mark a function with the Async modifier, you can use the Await operator in the function. Когда управление достигает Await
выражения в Async
функции, управление возвращается вызывающему объекту, и ход выполнения функции приостанавливается до тех пор, пока не завершится ожидаемая задача.When control reaches an Await
expression in the Async
function, control returns to the caller, and progress in the function is suspended until the awaited task completes. После завершения задачи выполнение может возобновиться в функции.When the task is complete, execution can resume in the function.
Примечание
Async
Процедура возвращается к вызывающему объекту, когда он встречает первый ожидающий объект, который еще не завершен, или на конец процедуры, в зависимости от того, что Async
происходит раньше.An Async
procedure returns to the caller when either it encounters the first awaited object that’s not yet complete, or it gets to the end of the Async
procedure, whichever occurs first.
Async
Функция может иметь тип возвращаемого значения Task<TResult> или Task .An Async
function can have a return type of Task<TResult> or Task. Ниже приведен пример Async
функции, имеющей тип возвращаемого значения Task<TResult> .An example of an Async
function that has a return type of Task<TResult> is provided below.
Async
Функция не может объявлять никакие параметры ByRef .An Async
function cannot declare any ByRef parameters.
Оператор подвыражения также может быть помечен Async
модификатором.A Sub Statement can also be marked with the Async
modifier. Это в основном используется для обработчиков событий, где значение не может быть возвращено.This is primarily used for event handlers, where a value cannot be returned. Async
Sub
Процедуру нельзя ожидать, и вызывающая Async
Sub
процедура не может перехватывать исключения, создаваемые Sub
процедурой.An Async
Sub
procedure can’t be awaited, and the caller of an Async
Sub
procedure can’t catch exceptions that are thrown by the Sub
procedure.
Дополнительные сведения о Async
функциях см. в разделе Асинхронное программирование с использованием Async и await, поток управления в асинхронных программахи асинхронные типы возвращаемыхданных.For more information about Async
functions, see Asynchronous Programming with Async and Await, Control Flow in Async Programs, and Async Return Types.
Функции итератораIterator Functions
Функция итератора выполняет настраиваемую итерацию для коллекции, например списка или массива.An iterator function performs a custom iteration over a collection, such as a list or array. Функция итератора использует оператор yield для возвращения каждого элемента по одному за раз.An iterator function uses the Yield statement to return each element one at a time. При достижении оператора yield текущее расположение в коде запоминается.When a Yield statement is reached, the current location in code is remembered. При следующем вызове функции итератора выполнение возобновляется с этого места.Execution is restarted from that location the next time the iterator function is called.
Итератор вызывается из клиентского кода с помощью метода For Each… Следующий оператор.You call an iterator from client code by using a For Each…Next statement.
Тип возвращаемого значения функции итератора может быть IEnumerable , IEnumerable<T> , IEnumerator или IEnumerator<T> .The return type of an iterator function can be IEnumerable, IEnumerable<T>, IEnumerator, or IEnumerator<T>.
Дополнительные сведения см. в разделе итераторы.For more information, see Iterators.
ПримерExample
В следующем примере оператор используется Function
для объявления имени, параметров и кода, образующих тело Function
процедуры.The following example uses the Function
statement to declare the name, parameters, and code that form the body of a Function
procedure. ParamArray
Модификатор позволяет функции принимать переменное число аргументов.The ParamArray
modifier enables the function to accept a variable number of arguments.
Public Function CalcSum(ByVal ParamArray args() As Double) As Double
CalcSum = 0
If args.Length <= 0 Then Exit Function
For i As Integer = 0 To UBound(args, 1)
CalcSum += args(i)
Next i
End Function
ПримерExample
В следующем примере вызывается функция, объявленная в предыдущем примере.The following example invokes the function declared in the preceding example.
Module Module1
Sub Main()
' In the following function call, CalcSum's local variables
' are assigned the following values: args(0) = 4, args(1) = 3,
' and so on. The displayed sum is 10.
Dim returnedValue As Double = CalcSum(4, 3, 2, 1)
Console.WriteLine("Sum: " & returnedValue)
' Parameter args accepts zero or more arguments. The sum
' displayed by the following statements is 0.
returnedValue = CalcSum()
Console.WriteLine("Sum: " & returnedValue)
End Sub
Public Function CalcSum(ByVal ParamArray args() As Double) As Double
CalcSum = 0
If args.Length <= 0 Then Exit Function
For i As Integer = 0 To UBound(args, 1)
CalcSum += args(i)
Next i
End Function
End Module
ПримерExample
В следующем примере DelayAsync
— это, Async
Function
имеющий тип возвращаемого значения Task<TResult> .In the following example, DelayAsync
is an Async
Function
that has a return type of Task<TResult>. DelayAsync
имеет инструкцию Return
, которая возвращает целое число.DelayAsync
has a Return
statement that returns an integer. Поэтому объявление функции DelayAsync
должно иметь тип возвращаемого значения Task(Of Integer)
.Therefore the function declaration of DelayAsync
needs to have a return type of Task(Of Integer)
. Так как тип возвращаемого значения — Task(Of Integer)
, вычисление Await
выражения в DoSomethingAsync
создает целое число.Because the return type is Task(Of Integer)
, the evaluation of the Await
expression in DoSomethingAsync
produces an integer. Это продемонстрировано в этой инструкции: Dim result As Integer = Await delayTask
.This is demonstrated in this statement: Dim result As Integer = Await delayTask
.
startButton_Click
Процедура является примером Async Sub
процедуры.The startButton_Click
procedure is an example of an Async Sub
procedure. Поскольку DoSomethingAsync
является Async
функцией, задача для вызова DoSomethingAsync
должна быть ожидаемой, как показано в следующей инструкции: Await DoSomethingAsync()
.Because DoSomethingAsync
is an Async
function, the task for the call to DoSomethingAsync
must be awaited, as the following statement demonstrates: Await DoSomethingAsync()
. startButton_Click
Sub
Процедура должна быть определена с Async
модификатором, так как содержит Await
выражение.The startButton_Click
Sub
procedure must be defined with the Async
modifier because it has an Await
expression.
' Imports System.Diagnostics
' Imports System.Threading.Tasks
' This Click event is marked with the Async modifier.
Private Async Sub startButton_Click(sender As Object, e As RoutedEventArgs) Handles startButton.Click
Await DoSomethingAsync()
End Sub
Private Async Function DoSomethingAsync() As Task
Dim delayTask As Task(Of Integer) = DelayAsync()
Dim result As Integer = Await delayTask
' The previous two statements may be combined into
' the following statement.
' Dim result As Integer = Await DelayAsync()
Debug.WriteLine("Result: " & result)
End Function
Private Async Function DelayAsync() As Task(Of Integer)
Await Task.Delay(100)
Return 5
End Function
' Output:
' Result: 5
См. также разделSee also
Математические функции — Visual Basic
-
- Чтение занимает 4 мин
В этой статье
Методы класса System.Math предоставляют тригонометрические, Логарифмические и другие общие математические функции.The methods of the System.Math class provide trigonometric, logarithmic, and other common mathematical functions.
ЗаметкиRemarks
В следующей таблице перечислены методы класса System.Math.The following table lists methods of the System.Math class. Их можно использовать в программе Visual Basic:You can use these in a Visual Basic program:
Метод .NET.NET method | ОписаниеDescription |
---|---|
Abs | Возвращает абсолютное значение числа.Returns the absolute value of a number. |
Acos | Возвращает угол, косинус которого равен указанному числу.Returns the angle whose cosine is the specified number. |
Asin | Возвращает угол, синус которого равен указанному числу.Returns the angle whose sine is the specified number. |
Atan | Возвращает угол, тангенс которого равен указанному числу.Returns the angle whose tangent is the specified number. |
Atan2 | Возвращает угол, тангенс которого равен отношению двух указанных чисел.Returns the angle whose tangent is the quotient of two specified numbers. |
BigMul | Возвращает полное произведение 2 32-разрядных чисел.Returns the full product of two 32-bit numbers. |
Ceiling | Возвращает наименьшее целочисленное значение, которое больше или равно указанному Decimal или Double .Returns the smallest integral value that’s greater than or equal to the specified Decimal or Double . |
Cos | Возвращает косинус указанного угла.Returns the cosine of the specified angle. |
Cosh | Возвращает гиперболический косинус указанного угла.Returns the hyperbolic cosine of the specified angle. |
DivRem | Возвращает частное от 2 32-битных или 64-битовых целых чисел со знаком, а также возвращает остаток в выходном параметре.Returns the quotient of two 32-bit or 64-bit signed integers, and also returns the remainder in an output parameter. |
Exp | Возвращает значение e (основание натуральных логарифмов), возведенное в указанную степень.Returns e (the base of natural logarithms) raised to the specified power. |
Floor | Возвращает максимальное целое число, которое меньше или равно указанному Decimal или Double ному числу.Returns the largest integer that’s less than or equal to the specified Decimal or Double number. |
IEEERemainder | Возвращает остаток, полученный от деления указанного числа на другое заданное число.Returns the remainder that results from the division of a specified number by another specified number. |
Log | Возвращает натуральный (базовый e) логарифм указанного числа или логарифм указанного числа в заданном базовом массиве.Returns the natural (base e) logarithm of a specified number or the logarithm of a specified number in a specified base. |
Log10 | Возвращает логарифм с основанием 10 указанного числа.Returns the base 10 logarithm of a specified number. |
Max | Возвращает большее из двух чисел.Returns the larger of two numbers. |
Min | Возвращает меньшее из двух чисел.Returns the smaller of two numbers. |
Pow | Возвращает указанное число, возведенное в указанную степень.Returns a specified number raised to the specified power. |
Round | Возвращает Decimal или Double значение, округленное до ближайшего целого значения или до указанного числа цифр дробной части.Returns a Decimal or Double value rounded to the nearest integral value or to a specified number of fractional digits. |
Sign | Возвращает значение типа Integer , указывающее знак числа.Returns an Integer value indicating the sign of a number. |
Sin | Возвращает синус указанного угла.Returns the sine of the specified angle. |
Sinh | Возвращает гиперболический синус указанного угла.Returns the hyperbolic sine of the specified angle. |
Sqrt | Возвращает квадратный корень из указанного числа.Returns the square root of a specified number. |
Tan | Возвращает тангенс указанного угла.Returns the tangent of the specified angle. |
Tanh | Возвращает гиперболический тангенс указанного угла.Returns the hyperbolic tangent of the specified angle. |
Truncate | Вычисляет целую часть указанного Decimal или Double числа.Calculates the integral part of a specified Decimal or Double number. |
В следующей таблице перечислены методы класса System.Math, которые не существуют в .NET Framework, но добавлены в .NET Standard или .NET Core:The following table lists methods of the System.Math class that don’t exist in .NET Framework but are added in .NET Standard or .NET Core:
Метод .NET.NET method | ОписаниеDescription | Доступно вAvailable in |
---|---|---|
Acosh | Возвращает угол, гиперболический косинус которого равен указанному числу.Returns the angle whose hyperbolic cosine is the specified number. | Начиная с .NET Core 2,1 и .NET Standard 2,1Starting with .NET Core 2.1 and .NET Standard 2.1 |
Asinh | Возвращает угол, гиперболический синус которого равен указанному числу.Returns the angle whose hyperbolic sine is the specified number. | Начиная с .NET Core 2,1 и .NET Standard 2,1Starting with .NET Core 2.1 and .NET Standard 2.1 |
Atanh | Возвращает угол, гиперболический тангенс которого равен указанному числу.Returns the angle whose hyperbolic tangent is the specified number. | Начиная с .NET Core 2,1 и .NET Standard 2,1Starting with .NET Core 2.1 and .NET Standard 2.1 |
BitDecrement | Возвращает ближайшее самое маленькое значение, которое меньше, чем x .Returns the next smallest value that compares less than x . | Начиная с .NET Core 3,0Starting with .NET Core 3.0 |
BitIncrement | Возвращает ближайшее самое большое значение, превышающее x .Returns the next largest value that compares greater than x . | Начиная с .NET Core 3,0Starting with .NET Core 3.0 |
Cbrt | Возвращает кубический корень из указанного числа.Returns the cube root of a specified number. | Начиная с .NET Core 2,1 и .NET Standard 2,1Starting with .NET Core 2.1 and .NET Standard 2.1 |
Clamp | Возвращает value , ограниченное диапазоном от min до max включительно.Returns value clamped to the inclusive range of min and max . | Начиная с .NET Core 2,0 и .NET Standard 2,1Starting with .NET Core 2.0 and .NET Standard 2.1 |
CopySign | Возвращает значение с величиной x и знаком y .Returns a value with the magnitude of x and the sign of y . | Начиная с .NET Core 3,0Starting with .NET Core 3.0 |
FusedMultiplyAdd | Возвращает (x * y) + z, округленное как одна операция ternary.Returns (x * y) + z, rounded as one ternary operation. | Начиная с .NET Core 3,0Starting with .NET Core 3.0 |
ILogB | Возвращает целочисленный логарифм с основанием 2 указанного числа.Returns the base 2 integer logarithm of a specified number. | Начиная с .NET Core 3,0Starting with .NET Core 3.0 |
Log2 | Возвращает логарифм с основанием 2 указанного числа.Returns the base 2 logarithm of a specified number. | Начиная с .NET Core 3,0Starting with .NET Core 3.0 |
MaxMagnitude | Возвращает большую величину из двух чисел двойной точности с плавающей запятой.Returns the larger magnitude of two double-precision floating-point numbers. | Начиная с .NET Core 3,0Starting with .NET Core 3.0 |
MinMagnitude | Возвращает меньшую величину из двух чисел двойной точности с плавающей запятой.Returns the smaller magnitude of two double-precision floating-point numbers. | Начиная с .NET Core 3,0Starting with .NET Core 3.0 |
ScaleB | Возвращает значение x * 2 ^ n, вычисленное эффективно.Returns x * 2^n computed efficiently. | Начиная с .NET Core 3,0Starting with .NET Core 3.0 |
Чтобы использовать эти функции без уточнения, импортируйте System.Mathое пространство имен в проект, добавив следующий код в начало исходного файла:To use these functions without qualification, import the System.Math namespace into your project by adding the following code to the top of your source file:
Imports System.Math
Пример-ABSExample — Abs
В этом примере используется метод Abs класса Math для расчета абсолютного значения числа.This example uses the Abs method of the Math class to compute the absolute value of a number.
Dim x As Double = Math.Abs(50.3)
Dim y As Double = Math.Abs(-50.3)
Console.WriteLine(x)
Console.WriteLine(y)
' This example produces the following output:
' 50.3
' 50.3
Пример — AtanExample — Atan
В этом примере используется метод Atan класса Math для вычисления значения PI.This example uses the Atan method of the Math class to calculate the value of pi.
Public Function GetPi() As Double
' Calculate the value of pi.
Return 4.0 * Math.Atan(1.0)
End Function
Примечание
Класс System.Math содержит Math.PI Константное поле.The System.Math class contains Math.PI constant field. Его можно использовать вместо вычисления.You can use it rather than calculating it.
Пример — COSExample — Cos
В этом примере используется метод Cos класса Math, чтобы получить косинус угла.This example uses the Cos method of the Math class to return the cosine of an angle.
Public Function Sec(angle As Double) As Double
' Calculate the secant of angle, in radians.
Return 1.0 / Math.Cos(angle)
End Function
Пример — expExample — Exp
В этом примере используется метод Exp класса Math, возвращающего значение e, возведенное в степень.This example uses the Exp method of the Math class to return e raised to a power.
Public Function Sinh(angle As Double) As Double
' Calculate hyperbolic sine of an angle, in radians.
Return (Math.Exp(angle) - Math.Exp(-angle)) / 2.0
End Function
Пример журналаExample — Log
В этом примере используется метод Log класса Math, чтобы получить натуральный логарифм числа.This example uses the Log method of the Math class to return the natural logarithm of a number.
Public Function Asinh(value As Double) As Double
' Calculate inverse hyperbolic sine, in radians.
Return Math.Log(value + Math.Sqrt(value * value + 1.0))
End Function
Пример-RoundExample — Round
В этом примере используется метод Round класса Math для округления числа до ближайшего целого числа.This example uses the Round method of the Math class to round a number to the nearest integer.
Dim myVar2 As Double = Math.Round(2.8)
Console.WriteLine(myVar2)
' The code produces the following output:
' 3
Пример — подписьExample — Sign
В этом примере используется метод Sign класса Math для определения знака числа.This example uses the Sign method of the Math class to determine the sign of a number.
Dim mySign1 As Integer = Math.Sign(12)
Dim mySign2 As Integer = Math.Sign(-2.4)
Dim mySign3 As Integer = Math.Sign(0)
Console.WriteLine(mySign1)
Console.WriteLine(mySign2)
Console.WriteLine(mySign3)
' The code produces the following output:
' 1
' -1
' 0
Пример — SinExample — Sin
В этом примере используется метод Sin класса Math, чтобы получить синус угла.This example uses the Sin method of the Math class to return the sine of an angle.
Public Function Csc(angle As Double) As Double
' Calculate cosecant of an angle, in radians.
Return 1.0 / Math.Sin(angle)
End Function
Пример. SqrtExample — Sqrt
В этом примере используется метод Sqrt класса Math для вычисления квадратного корня числа.This example uses the Sqrt method of the Math class to calculate the square root of a number.
Dim mySqrt1 As Double = Math.Sqrt(4)
Dim mySqrt2 As Double = Math.Sqrt(23)
Dim mySqrt3 As Double = Math.Sqrt(0)
Dim mySqrt4 As Double = Math.Sqrt(-4)
Console.WriteLine(mySqrt1)
Console.WriteLine(mySqrt2)
Console.WriteLine(mySqrt3)
Console.WriteLine(mySqrt4)
' The code produces the following output:
' 2
' 4.79583152331272
' 0
' NaN
Пример — TanExample — Tan
В этом примере используется метод Tan класса Math, чтобы получить тангенс угла.This example uses the Tan method of the Math class to return the tangent of an angle.
Public Function Ctan(angle As Double) As Double
' Calculate cotangent of an angle, in radians.
Return 1.0 / Math.Tan(angle)
End Function
См. также:See also
Visual Basic.NET. Процедуры и функции
Урок из серии «Программирование на Visual Basic.NET для школьников»
В предыдущем уроке рассказывалось о работе с текстовыми файлами.
В этом уроке поговорим о подпрограммах. При разработке сложного алгоритма целесообразно выделить в нем последовательности действий, которые многократно повторяются, оформить как вспомогательные алгоритмы и, по мере необходимости, вызывать их из основного алгоритма.
Программы, реализующие вспомогательный алгоритм, называются подпрограммами. Подпрограмму можно оформить как процедуру или как функцию.
В этом уроке вы узнаете: какие преимущества дает использование подпрограмм, чем отличаются процедуры и функции, как они описываются и как вызываются.
Процедуры и функции предоставляют следующие преимущества:
- Устраняют повторяющиеся строки. Вы можете один раз определить процедуру или функцию и вызывать ее там, где это необходимо.
- Делают программы более читаемыми. Программу, разбитую на несколько частей, воспринимать легче, чем программу, сделанную в виде одного большого фрагмента.
- Упрощают разработку программы. Программы, разделенные на логические единицы, легче разрабатывать, писать и отлаживать.
- Могут повторно использоваться в других проектах и решениях.
- Расширяют возможности языка программирования. Если для решения ваших задач в языке программирования нет готовых, встроенных в язык программирования процедур и функций, можно написать свои процедуры и функции.
Основные отличия функции от процедуры:
1. Функция имеет тип (аналогично переменной) и может возвращать значение через имя функции. Ее можно использовать качестве операнда в выражениях. Процедура возвращает результаты через параметры, ее нельзя использовать в выражениях.
2. Вызов функции осуществляется посредством указания ее имени в каком либо операторе языка программирования. Процедура вызывается с помощью отдельного оператора.
Прежде чем использовать процедуру или функцию в программе, ее нужно объявить (описать).
Подпрограмма типа Sub
При описании процедуры, как и при описании функции, ей дается уникальное название – имя процедуры и устанавливается список параметров. Параметры разделяются между собой запятой и содержат описание типов.
Общий вид описания процедуры:
Sub название_процедуры ([параметры]) операторы_процедуры End Sub
Здесь:
- название_процедуры — имя создаваемой вами процедуры Sub;
- параметры — необязательный список формальных параметров, используемых в процедуре Sub;
- операторы_процедуры — блок операторов, который выполняет работу процедуры.
Вызов процедуры типа Sub
Чтобы вызвать в программе процедуру, нужно указать имя этой процедуры, а затем список фактических параметров, требуемых для этой процедуры.
Общий вид вызова процедуры:
Имя_переменной = название_функции(фактические параметры)
Если в процедуру не передается ни одного аргумента, то требуется наличие пустых круглых скобок.
Передача параметров
При описании процедуры после имени в круглых скобках указывается список параметров с указанием их типов. Эти параметры называются формальными. Они определяют место подстановки фактических параметров.
При вызове процедуры или функции в списке указываются фактические параметры, значения которых должны быть заранее определены.
Параметры можно передавать по значению и по ссылке.
В чем различие?
Каждая переменная имеет значение и уникальный адрес, соответствующий положению переменной в оперативной памяти компьютера.
Языки программирования позволяют передавать в процедуру как значение переменной (передача по значению), так и ее адрес в оперативной памяти (передача по ссылке).
При передаче по значению в процедуру передается только копия переменной, т.е. процедура не получает доступ к переменной в памяти и не может изменить ее значение. Для передачи параметров по значению в описании процедуры перед параметром в списке параметров указывают ключевое слово ByVal (от англ. by value – по значению).
При передаче переменной по ссылке процедуре передается ссылка на ее адрес в оперативной памяти, таким образом, процедура получает доступ к переменной в памяти и может ее изменить. Чтобы передавать переменную по ссылке, необходимо в описании процедуры перед соответствующим параметром в списке добавить ключевое слово ByRef (от англ. by reference – по ссылке).
При вызове процедур ключевые слова, определяющие способ передачи параметров и тип параметров, не указываются.
Проект «Передача по ссылке и по значению»
Задание.Создать проект, в котором описывается процедура, один параметр которой передается по ссылке, а другой – по значению. Значения параметров внутри процедуры изменяются. В вызывающей процедуре переменным присваиваются начальные значения, производится вызов процедуры с указанием переменных в качестве фактических параметров. После выполнения процедуры значения переменных выводятся на надписи.
- Разместить на форме:
- текстовые поля TextBox1 и TextBox2 для вывода начальных значений переменных;
- надписи Label1 и Label2 для вывода конечного значения переменных;
- кнопку button1 для создания процедуры-обработчика события;
- четыре надписи для вывода поясняющих текстов.
В программном коде процедуры первый параметр X передается по ссылке, а второй параметр Y передается по значению.
Создадим программный код проекта, в котором:
- объявим переменные;
- создадим процедуру, умножающую значение переменных, передаваемых по ссылке и по значению, на коэффициент 5;
- создадим обработчик, реализующих присваивание переменным начальных значений, вызов первой процедуры и осуществляющий вывод ключевых значений переменных на надписи.
- Объявить переменные и создать код вызываемой процедуры:
Dim RefA, ValB As Byte Sub refVal(ByRef RefA, ByVal ValB) RefA = RefA * 5 ValB = ValB * 5 End Sub
- Создать код вызывающей процедуры-обработчика события:
Private Sub Button1_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles Button1.Click RefA = Val(TextBox1.Text) ValB = Val(TextBox2.Text) refVal(RefA, ValB) Label1.Text = Str(RefA) Label2.Text = Str(ValB) End Sub
- Запустить проект на выполнение и вывести в текстовые поля начальные значения переменных (например, 3). На надписи будут выведены конечные значения переменной, передаваемое по ссылке (в данном случае, 15), и переменной, передаваемой по значению (в данном случае 3).Значение переменной, передаваемое по значению, не изменилось.Что и требовалось доказать!
Подпрограмма типа Function
Функции являются подпрограммами, которые возвращают значения и поэтому могут использоваться в выражениях.
Наиболее широко используются встроенные функции: математические, преобразования типов данных, обработки строк, даты и времени и др.
Программист может создавать свои функции.
При описании функции ей дается уникальное название – имя функции и устанавливается список параметров, определяется тип возвращаемого значения. Параметры разделяются между собой запятой и содержат описание типов.
Общий вид описания функции:
Function название_функции ([параметры]) As тип операторы_функции [Return значение] End Function
Здесь:
- название_функции — имя создаваемой вами функции.
- As тип — пара ключевых слов, которые определяют тип возвращаемого функцией значения.
- параметры — необязательный список параметров, используемых в данной функции.
- операторы_функции — это блок операторов, который выполняет работу функции.
- Return — новый оператор Visual Basic .NET. Он позволяет указать, когда нужно выйти из функции, чтобы возвратить значение в вызывающую программу, и каково это возвращаемое значение.В качестве альтернативы можно использовать синтаксис Visual Basic 6 и возвращать значение в вызывающий код, присвоив значение имени функции.
Вызов подпрограммы типа Function
Для вызова функцию в программе, необходимо поместить в оператор программы имя этой функции и все требуемые для нее аргументы (фактические параметры).
Пример вызова функции в операторе присваивания:
Имя_переменной = название_функции(фактические параметры)
Проект «Функция»
Задание. Создать проект, в котором определяется функция (например, умножения двух чисел F = x*y), выводится на надпись значение функции.
- Разместить на форме:
- для вывода значений аргументов два текстовых поля TextBox1 и TextBox20;
- для вывода значений функции надпись label1;
- для создания обработчика события кнопку Button1.
- Создать код вызываемой функции:
Function F(ByVal x, ByVal y) As Integer F = x * y End Function
- Объявить переменные и создать код вызывающей процедуры-обработчика:
Private Sub Button1_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles Button1.Click Dim x, y As Integer x = Val(TextBox1.Text) y = Val(TextBox2.Text) Label1.Text = Str(F(x, y)) End Sub
- Запустить проект на выполнение и ввести в текстовые поля значения переменных (например, 2 и 3). На надписи будет выведено вычисленное значение функции.
В этом уроке было показано применение процедур и функций для реализации вспомогательных алгоритмов. В следующем уроке поговорим о массивах
Следующий урок: Массивы. Заполнение массивов.
Поделитесь с друзьями
Строковые функции — Visual Basic
-
- Чтение занимает 4 мин
В этой статье
В следующей таблице перечислены функции, которые Visual Basic предоставляет в Microsoft.VisualBasic.Strings классе для поиска и работы со строками.The following table lists the functions that Visual Basic provides in the Microsoft.VisualBasic.Strings class to search and manipulate strings. Их можно рассматривать как Visual Basic встроенных функций; то есть вам не нужно вызывать их как явные члены класса, как показано в примерах.They can be regarded as Visual Basic intrinsic functions; that is, you do not have to call them as explicit members of a class, as the examples show. Дополнительные методы и в некоторых случаях дополняют методы, доступны в System.String классе.Additional methods, and in some cases complementary methods, are available in the System.String class.
Метод .NET Framework.NET Framework method | ОписаниеDescription |
---|---|
Asc, AscWAsc, AscW | Возвращает Integer значение, представляющее код символа, соответствующий символу.Returns an Integer value representing the character code corresponding to a character. |
Chr, ChrWChr, ChrW | Возвращает знак, связанный с указанным кодом знака.Returns the character associated with the specified character code. |
Filter | Возвращает массив (с индексацией от нуля), который содержит подмножество массива типа String , выделяемое согласно указанным условиям фильтрации.Returns a zero-based array containing a subset of a String array based on specified filter criteria. |
Format | Возвращает строку, отформатированную в соответствии с инструкциями, содержащимися в формате выражения String .Returns a string formatted according to instructions contained in a format String expression. |
FormatCurrency | Возвращает выражение в формате денежной единицы с использованием символа денежной единицы, определенного в системной панели управления.Returns an expression formatted as a currency value using the currency symbol defined in the system control panel. |
FormatDateTime | Возвращает строковое выражение, представляющее значение даты и времени.Returns a string expression representing a date/time value. |
FormatNumber | Возвращает выражение в формате числа.Returns an expression formatted as a number. |
FormatPercent | Возвращает выражение в виде процента (умноженное на 100) с символом % в конце.Returns an expression formatted as a percentage (that is, multiplied by 100) with a trailing % character. |
InStr | Возвращает целое число, указывающее начальную позицию первого вхождения одной строки в другую.Returns an integer specifying the start position of the first occurrence of one string within another. |
InStrRev | Возвращает позицию первого вхождения одной строки в другую, начиная с правого конца строки.Returns the position of the first occurrence of one string within another, starting from the right side of the string. |
Join | Возвращает строку, образуемую путем соединения нескольких подстрок, содержащихся в массиве.Returns a string created by joining a number of substrings contained in an array. |
LCase | Возвращает строку или символ, преобразованные в нижний регистр.Returns a string or character converted to lowercase. |
Left | Возвращает строку, содержащую указанное число знаков с левой стороны строки.Returns a string containing a specified number of characters from the left side of a string. |
Len | Возвращает целое число, содержащее количество символов в строке.Returns an integer that contains the number of characters in a string. |
LSet | Возвращает выровненную по левому краю строку запрашиваемой длины, содержащую указанную строку.Returns a left-aligned string containing the specified string adjusted to the specified length. |
LTrim | Возвращает строку, содержащую копию указанной строки без начальных пробелов.Returns a string containing a copy of a specified string with no leading spaces. |
Mid | Возвращает строку, содержащую указанное число символов из строки.Returns a string containing a specified number of characters from a string. |
Replace | Возвращает строку, в которой указанная подстрока заданное число раз заменена другой подстрокой.Returns a string in which a specified substring has been replaced with another substring a specified number of times. |
Right | Возвращает строку, содержащую указанное число знаков с правой стороны строки.Returns a string containing a specified number of characters from the right side of a string. |
RSet | Возвращает выровненную по правому краю строку, содержащую указанную строку, настроенную под указанную длину.Returns a right-aligned string containing the specified string adjusted to the specified length. |
RTrim | Возвращает строку, содержащую копию указанной строки без конечных пробелов.Returns a string containing a copy of a specified string with no trailing spaces. |
Space | Возвращает строку, состоящую из указанного числа пробелов.Returns a string consisting of the specified number of spaces. |
Split | Возвращает одномерный массив (с индексацией от нуля), содержащий указанное число подстрок.Returns a zero-based, one-dimensional array containing a specified number of substrings. |
StrComp | Возвращает -1, 0 или 1 в зависимости от результата сравнения строк.Returns -1, 0, or 1, based on the result of a string comparison. |
StrConv | Возвращает строку, преобразованную как указано.Returns a string converted as specified. |
StrDup | Возвращает строку или объект, состоящие из указанного знака, повторенного определенное количество раз.Returns a string or object consisting of the specified character repeated the specified number of times. |
StrReverse | Возвращает строку, содержащую те же знаки, что и в заданной строке, но в противоположном порядке.Returns a string in which the character order of a specified string is reversed. |
Trim | Возвращает строку, содержащую копию указанной строки без начальных или конечных пробелов.Returns a string containing a copy of a specified string with no leading or trailing spaces. |
UCase | Возвращает строку или знак, содержащий указанную строку, преобразованную в верхний регистр.Returns a string or character containing the specified string converted to uppercase. |
Можно использовать инструкцию Option Compare , чтобы задать, сравниваются ли строки с использованием порядка сортировки текста без учета регистра, определенного языковым стандартом системы ( Text
) или внутренними двоичными представлениями символов ( Binary
).You can use the Option Compare statement to set whether strings are compared using a case-insensitive text sort order determined by your system’s locale (Text
) or by the internal binary representations of the characters (Binary
). Метод сравнения текста по умолчанию — Binary
.The default text comparison method is Binary
.
Пример: УкасеExample: UCase
В данном примере функция UCase
используется для возврата строки в верхнем регистре.This example uses the UCase
function to return an uppercase version of a string.
' String to convert.
Dim lowerCase As String = "Hello World 1234"
' Returns "HELLO WORLD 1234".
Dim upperCase As String = UCase(lowerCase)
Пример: LTrimExample: LTrim
В данном примере функция LTrim
используется, чтобы убрать пробелы в начале, а функция RTrim
— чтобы убрать пробелы в конце строковой переменной.This example uses the LTrim
function to strip leading spaces and the RTrim
function to strip trailing spaces from a string variable. Функция Trim
в примере используется для удаления обоих типов пробелов.It uses the Trim
function to strip both types of spaces.
' Initializes string.
Dim testString As String = " <-Trim-> "
Dim trimString As String
' Returns "<-Trim-> ".
trimString = LTrim(testString)
' Returns " <-Trim->".
trimString = RTrim(testString)
' Returns "<-Trim->".
trimString = LTrim(RTrim(testString))
' Using the Trim function alone achieves the same result.
' Returns "<-Trim->".
trimString = Trim(testString)
Пример: midExample: Mid
В этом примере Mid
функция используется для возврата указанного числа символов из строки.This example uses the Mid
function to return a specified number of characters from a string.
' Creates text string.
Dim testString As String = "Mid Function Demo"
' Returns "Mid".
Dim firstWord As String = Mid(testString, 1, 3)
' Returns "Demo".
Dim lastWord As String = Mid(testString, 14, 4)
' Returns "Function Demo".
Dim midWords As String = Mid(testString, 5)
Пример: lenExample: Len
В данном примере Len
используется для возврата числа знаков в строке.This example uses Len
to return the number of characters in a string.
' Initializes variable.
Dim testString As String = "Hello World"
' Returns 11.
Dim testLen As Integer = Len(testString)
Пример: InStrExample: InStr
В данном примере функция InStr
используется для возврата позиции первого вхождения одной строки в другую.This example uses the InStr
function to return the position of the first occurrence of one string within another.
' String to search in.
Dim searchString As String = "XXpXXpXXPXXP"
' Search for "P".
Dim searchChar As String = "P"
Dim testPos As Integer
' A textual comparison starting at position 4. Returns 6.
testPos = InStr(4, searchString, searchChar, CompareMethod.Text)
' A binary comparison starting at position 1. Returns 9.
testPos = InStr(1, SearchString, SearchChar, CompareMethod.Binary)
' If Option Compare is not set, or set to Binary, return 9.
' If Option Compare is set to Text, returns 3.
testPos = InStr(searchString, searchChar)
' Returns 0.
testPos = InStr(1, searchString, "W")
Пример: FormatExample: Format
В данном примере показаны различные способы использования функции Format
для форматирования значений с применением как форматов String
, так и определенных пользователем форматов.This example shows various uses of the Format
function to format values using both String
formats and user-defined formats. Фактическое отображение системой разделителя даты (/
), разделителя времени (:
и индикаторов AM/PM (t
и tt
) зависит от региональных параметров, применяемых кодом.For the date separator (/
), time separator (:
), and the AM/PM indicators (t
and tt
), the actual formatted output displayed by your system depends on the locale settings the code is using. При отображении времени и даты в среде разработки используется короткий формат времени и даты региональных установок кода.When times and dates are displayed in the development environment, the short time format and short date format of the code locale are used.
Примечание
Для языков, использующих 24-часовой формат, индикаторы AM/PM (t
и tt
) не отображаются.For locales that use a 24-hour clock, the AM/PM indicators (t
and tt
) display nothing.
Dim testDateTime As Date = #1/27/2001 5:04:23 PM#
Dim testStr As String
' Returns current system time in the system-defined long time format.
testStr = Format(Now(), "Long Time")
' Returns current system date in the system-defined long date format.
testStr = Format(Now(), "Long Date")
' Also returns current system date in the system-defined long date
' format, using the single letter code for the format.
testStr = Format(Now(), "D")
' Returns the value of testDateTime in user-defined date/time formats.
' Returns "5:4:23".
testStr = Format(testDateTime, "h:m:s")
' Returns "05:04:23 PM".
testStr = Format(testDateTime, "hh:mm:ss tt")
' Returns "Saturday, Jan 27 2001".
testStr = Format(testDateTime, "dddd, MMM d yyyy")
' Returns "17:04:23".
testStr = Format(testDateTime, "HH:mm:ss")
' Returns "23".
testStr = Format(23)
' User-defined numeric formats.
' Returns "5,459.40".
testStr = Format(5459.4, "##,##0.00")
' Returns "334.90".
testStr = Format(334.9, "###0.00")
' Returns "500.00%".
testStr = Format(5, "0.00%")
См. также разделSee also
Общие сведения о синтаксисе Visual Basic (VBA)
-
- Чтение занимает 3 мин
В этой статье
В синтаксисе, который описан в разделе справки Visual Basic, посвященном методам, функциям и операторам, показаны все элементы, необходимые для их правильного использования.The syntax in a Visual Basic Help topic for a method, function, or statement shows all the elements necessary to use the method, function, or statement correctly. Примеры в этой теме поясняют, как интерпретировать наиболее часто используемые элементы синтаксиса.The examples in this topic explain how to interpret the most common syntax elements.
Синтаксис метода ActivateActivate method syntax
object.Activateobject.Activate
В синтаксисе метода Activate слово «object», написанное курсивом, является заполнителем для предоставляемых данных в данном случае это код, возвращающий объект.In the Activate method syntax, the italic word «object» is a placeholder for information you supply—in this case, code that returns an object. Необходимо четко придерживаться написания слов, выделенных полужирным шрифтом.Words that are bold should be typed exactly as they appear. Например, следующая процедура активирует второе окно в активном документе.For example, the following procedure activates the second window in the active document.
Sub MakeActive()
Windows(2).Activate
End Sub
Синтаксис функции MsgBoxMsgBox function syntax
MsgBox (prompt, [ buttons, ] [ title, ] [ helpfile, context ])MsgBox (prompt, [ buttons, ] [ title, ] [ helpfile, context ])
В синтаксисе функции MsgBox выделенные курсивом слова являются именованными аргументами функции.In the MsgBox function syntax, the italic words are named arguments of the function. Аргументы, заключенные в квадратные скобки, использовать не обязательно.Arguments enclosed in brackets are optional. (Не используйте квадратные скобки в коде Visual Basic). Единственный обязательный аргумент для функции MsgBox это текст для приглашения.(Do not type the brackets in your Visual Basic code.) For the MsgBox function, the only argument you must provide is the text for the prompt.
Аргументы функций и методов можно указывать в коде двумя способами: по позиции или по имени.Arguments for functions and methods can be specified in code either by position or by name. Чтобы указать аргументы по позиции, придерживайтесь порядка, представленного в синтаксисе, отделяя каждый аргумент запятой, например:To specify arguments by position, follow the order presented in the syntax, separating each argument with a comma, for example:
MsgBox "Your answer is correct!",0,"Answer Box"
Чтобы указать аргументы по имени, необходимо после имени аргумента поставить двоеточие и знак равенства (:=), а затем задать значение аргумента.To specify an argument by name, use the argument name followed by a colon and an equal sign (:=), and the argument’s value. Именованные аргументы можно указывать в любом порядке, например:You can specify named arguments in any order, for example:
MsgBox Title:="Answer Box", Prompt:="Your answer is correct!"
Синтаксис функций и некоторых методов содержит аргументы, заключенные в скобки.The syntax for functions and some methods shows the arguments enclosed in parentheses. Это необходимо для присвоения значения переменной, так как эти функции и методы возвращают значения.These functions and methods return values, so you must enclose the arguments in parentheses to assign the value to a variable. Не используйте скобки, если вы не учитываете возвращаемое значение или не передаете аргументы.If you ignore the return value or if you don’t pass arguments at all, don’t include the parentheses. Не нужно заключать в скобки аргументы методов, которые не возвращают никаких значений.Methods that don’t return values do not need their arguments enclosed in parentheses. Эти рекомендации подходят как для позиционных, так и для именованных аргументов.These guidelines apply whether you are using positional arguments or named arguments.
В примере ниже возвращаемое значение функции MsgBox представляет собой число, обозначающее выбранную кнопку, которая хранится в переменной myVar
.In the following example, the return value from the MsgBox function is a number indicating the selected button that is stored in the variable myVar
. Так как используется возвращаемое значение, скобки обязательны.Because the return value is used, parentheses are required. Значение переменной отображается в другом окне сообщения.Another message box then displays the value of the variable.
Sub Question()
myVar = MsgBox(Prompt:="I enjoy my job.", _
Title:="Answer Box", Buttons:="4")
MsgBox myVar
End Sub
Синтаксис оператора Option CompareOption Compare statement syntax
Option Compare { Binary | Text | Database }Option Compare { Binary | Text | Database }
В синтаксисе оператора Option Compare фигурные скобки и вертикальная черта обозначают обязательный выбор между тремя элементами.In the Option Compare statement syntax, the braces and vertical bar indicate a mandatory choice between three items. (Не используйте фигурные скобки в операторе Visual Basic).(Do not type the braces in the Visual Basic statement). Например, этот оператор указывает, что строки модуля будут сравниваться в порядке сортировки без учета регистра.For example, the following statement specifies that within the module, strings will be compared in a sort order that is not case-sensitive.
Option Compare Text
Синтаксис оператора DimDim statement syntax
Dim имя_переменной [([ подстрочные ])] [ as Type,] [ имя_переменной [([ подстрочно ])] [ as Type ]] .. .Dim varname [([ subscripts ])] [ As type, ] [ varname [([ subscripts ])] [ As type ]] . . .
В синтаксисе оператора Dim слово Dim является необходимым ключевым словом.In the Dim statement syntax, the word Dim is a required keyword. Единственным обязательным элементом является элемент varname (имя переменной).The only required element is varname (the variable name).
Например, указанный ниже оператор создает три переменные: myVar
, nextVar
и thirdVar
.For example, the following statement creates three variables: myVar
, nextVar
, and thirdVar
. Они автоматически объявляются переменными типа Variant.These are automatically declared as Variant variables.
Dim myVar, nextVar, thirdVar
В приведенном ниже примере показано объявление переменной типа String.The following example declares a variable as a String. Добавление типа данных экономит память и помогает находить ошибки в коде.Including a data type saves memory and can help you find errors in your code.
Dim myAnswer As String
Чтобы объявить несколько переменных в одном операторе, включите тип данных для каждой переменной.To declare several variables in one statement, include the data type for each variable. Переменным, объявленным без типа данных, автоматически назначается тип Variant.Variables declared without a data type are automatically declared as Variant.
Dim x As Integer, y As Integer, z As Integer
В представленном ниже операторе переменным x
и y
назначается тип данных Variant.In the following statement, x
and y
are assigned the Variant data type. Переменная z
является единственной, которой присваивается тип данных Integer.Only z
is assigned the Integer data type.
Dim x, y, z As Integer
Сокращение для объявления переменных x
и y
типом Integer в приведенном выше оператореThe shorthand to declare x
and y
as Integer in the statement above is:
Dim x%, y%, z as Integer
Сокращение для типов: % – Integer; & – Long; @ – Currency; # – Double; !The shorthand for the types is: % -integer; & -long; @ -currency; # -double; ! – Single; $ – String-single; $ -string
При объявлении переменной массива необходимо использовать скобки.If you are declaring an array variable, you must include parentheses. Подстрочные знаки в этом случае не обязательны.The subscripts are optional. Указанный ниже оператор определяет размеры динамического массива myArray
.The following statement dimensions a dynamic array, myArray
.
Dim myArray()
См. такжеSee also
Поддержка и обратная связьSupport and feedback
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи?Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Процедуры — Visual Basic | Microsoft Docs
-
- Чтение занимает 3 мин
В этой статье
Процедура — это блок Visual Basic инструкций, заключенных в оператор объявления ( Function
,, Sub
Operator
, Get
, Set
) и End
объявлении сопоставления.A procedure is a block of Visual Basic statements enclosed by a declaration statement (Function
, Sub
, Operator
, Get
, Set
) and a matching End
declaration. Все исполняемые инструкции в Visual Basic должны находиться в пределах некоторой процедуры.All executable statements in Visual Basic must be within some procedure.
Вызов процедурыCalling a Procedure
Процедура вызывается из другого места в коде.You invoke a procedure from some other place in the code. Это называется вызовом процедуры.This is known as a procedure call. После завершения процедуры она возвращает управление в код, из которого она была вызвана (вызывающий код).When the procedure is finished running, it returns control to the code that invoked it, which is known as the calling code. Вызывающий код — это оператор или выражение в составе оператора, в которых указывается имя процедуры и передается управление процедуре.The calling code is a statement, or an expression within a statement, that specifies the procedure by name and transfers control to it.
Возврат из процедурыReturning from a Procedure
После завершения процедуры она возвращает управление вызывающему коду.A procedure returns control to the calling code when it has finished running. Для этого можно использовать инструкцию Return, соответствующую инструкцию Exit Function для процедуры или инструкцию End <keyword> инструкции процедуры.To do this, it can use a Return Statement, the appropriate Exit Statement statement for the procedure, or the procedure’s End <keyword> Statement statement. Затем управление передается в вызывающий код, следующий за точкой вызова процедуры.Control then passes to the calling code following the point of the procedure call.
При использовании оператора
Return
управление немедленно возвращается в вызывающий код.With aReturn
statement, control returns immediately to the calling code. Операторы, следующие за операторомReturn
, не выполняются.Statements following theReturn
statement do not run. В одной и той же процедуре можно использовать несколько операторовReturn
.You can have more than oneReturn
statement in the same procedure.При использовании операторов
Exit Sub
илиExit Function
управление немедленно возвращается в вызывающий код.With anExit Sub
orExit Function
statement, control returns immediately to the calling code. Операторы, следующие за операторомExit
, не выполняются.Statements following theExit
statement do not run. В одной и той же процедуре можно использовать несколько операторовExit
и одновременно использовать операторыReturn
иExit
.You can have more than oneExit
statement in the same procedure, and you can mixReturn
andExit
statements in the same procedure.Если процедура не содержит операторов
Return
илиExit
, она завершается операторомEnd Sub
,End Function
,End Get
илиEnd Set
, который следует за последним оператором в составе процедуры.If a procedure has noReturn
orExit
statements, it concludes with anEnd Sub
orEnd Function
,End Get
, orEnd Set
statement following the last statement of the procedure body. При использовании оператораEnd
управление немедленно возвращается в вызывающий код.TheEnd
statement returns control immediately to the calling code. В процедуре можно использовать только один операторEnd
.You can have only oneEnd
statement in a procedure.
Параметры и аргументыParameters and Arguments
В большинстве случаев процедура должна работать с разными данными при каждом вызове.In most cases, a procedure needs to operate on different data each time you call it. Эти данные можно передать в процедуру при ее вызове.You can pass this information to the procedure as part of the procedure call. В процедуре можно определить параметры (ноль или более), каждый из которых представляет одно из передаваемых значений.The procedure defines zero or more parameters, each of which represents a value it expects you to pass to it. Каждому параметру в определении процедуры соответствует аргумент при вызове процедуры.Corresponding to each parameter in the procedure definition is an argument in the procedure call. Аргумент представляет значение, которое передается в соответствующий параметр для заданного вызова процедуры.An argument represents the value you pass to the corresponding parameter in a given procedure call.
Типы процедурTypes of Procedures
Visual Basic использует несколько типов процедур:Visual Basic uses several types of procedures:
Подпрограммы выполняют действия, но не возвращают значение в вызывающий код.Sub Procedures perform actions but do not return a value to the calling code.
Процедуры обработки событий — это процедуры
Sub
, которые выполняются в ответ на событие, вызванное действием пользователя или наступлением определенных условий в программе.Event-handling procedures areSub
procedures that execute in response to an event raised by user action or by an occurrence in a program.Функции возвращают значение в вызывающий код.Function Procedures return a value to the calling code. Они могут выполнять другие действия перед возвратом.They can perform other actions before returning.
Некоторые функции, написанные на C#, возвращают значение по ссылке.Some functions written in C# return a reference return value. Вызывающие функции могут изменять возвращаемое значение, и это изменение отражается в состоянии вызываемого объекта.Function callers can modify the return value, and this modification is reflected in the state of the called object. Начиная с Visual Basic 2017, в коде можно использовать значения, возвращаемые по ссылке, но нельзя возвращать значения по ссылке.Starting with Visual Basic 2017, Visual Basic code can consume reference return values, although it cannot return a value by reference. Дополнительные сведения см. в разделе Значения, возвращаемые по ссылке.For more information, see Reference return values.
Процедуры свойств возвращают и задают значения свойств для объектов или модулей.Property Procedures return and assign values of properties on objects or modules.
Процедуры операторов определяют поведение стандартного оператора, если один или оба операнда представляют собой недавно определенный класс или структуру.Operator Procedures define the behavior of a standard operator when one or both of the operands is a newly-defined class or structure.
В универсальных процедурах в Visual Basic определяются параметры типа в дополнение к обычным параметрам процедуры. Это позволяет передавать параметры определенного типа из вызывающего кода при каждом вызове.Generic Procedures in Visual Basic define one or more type parameters in addition to their normal parameters, so the calling code can pass specific data types each time it makes a call.
Процедуры и структурированный кодProcedures and Structured Code
Каждая строка исполняемого кода в приложении должна находиться внутри некоторой процедуры, такой как Main
, calculate
или Button1_Click
.Every line of executable code in your application must be inside some procedure, such as Main
, calculate
, or Button1_Click
. Если разделить большие процедуры на более мелкие, код будет более удобным для чтения.If you subdivide large procedures into smaller ones, your application is more readable.
Процедуры можно использовать для реализации повторяющихся или общих задач, таких как часто используемые вычисления, операции с текстом и элементами управления и операции с базами данных.Procedures are useful for performing repeated or shared tasks, such as frequently used calculations, text and control manipulation, and database operations. Процедуры можно вызывать из различных мест в коде; таким образом, их можно использовать в качестве стандартных блоков для создания приложения.You can call a procedure from many different places in your code, so you can use procedures as building blocks for your application.
Структурирование кода с помощью процедур предоставляет следующие преимущества.Structuring your code with procedures gives you the following benefits:
Процедуры позволяют разбить программу на отдельные логические блоки.Procedures allow you to break your programs into discrete logical units. Отлаживать такие отдельные блоки легче, чем всю программу целиком.You can debug separate units more easily than you can debug an entire program without procedures.
После разработки процедур для использования в одной программе их можно использовать в других программах без изменений или с небольшими изменениями.After you develop procedures for use in one program, you can use them in other programs, often with little or no modification. Это помогает избежать дублирования кода.This helps you avoid code duplication.
См. такжеSee also
Заявление функции
— Visual Basic
- 8 минут на чтение
В этой статье
Объявляет имя, параметры и код, которые определяют процедуру Function
.
Синтаксис
[] [модификатор доступа] [модификаторы процедуры] [Общий] [Тени] [Асинхронный | Итератор]
Имя функции [(Of typeparamlist)] [(список параметров)] [Как тип возврата] [Список реализаций | Обрабатывает список событий]
[ заявления ]
[Выход из функции]
[ заявления ]
Конечная функция
Детали
Атрибутелист
Необязательно.См. Список атрибутов.
модификатор доступа
Необязательно. Может быть одним из следующих:
См. Уровни доступа в Visual Basic.
модификаторы процедур
Необязательно. Может быть одним из следующих:
Общий
Необязательно. Смотрите Shared.
Тени
Необязательно. См. Тени.
Асинхронный
Необязательно.См. Async.
Итератор
Необязательно. См. Итератор.
наименование
Обязательно. Название процедуры. См. Объявленные имена элементов.
типпарамлист
Необязательно. Список параметров типа для универсальной процедуры. См. Список типов.
список параметров
Необязательно. Список имен локальных переменных, представляющих параметры этой процедуры.См. Список параметров.
возврат
Требуется, если
Option Strict
—На
. Тип данных значения, возвращаемого этой процедурой.Орудия
Необязательно. Указывает, что эта процедура реализует одну или несколько процедур
Function
, каждая из которых определена в интерфейсе, реализованном классом или структурой, содержащим эту процедуру. См. Заявление об оборудовании.список агрегатов
Требуется, если поставляется
Агрегаты
.Список реализуемых процедурFunction
.выполнена процедура [, выполнена процедура ...]
Каждая реализованная процедура
interface.definedname
Деталь Описание интерфейс
Обязательно. Имя интерфейса, реализуемого классом или структурой этой процедуры. определенное имя
Обязательно. Имя, под которым процедура определена в интерфейсе
.Ручки
Необязательно. Указывает, что эта процедура может обрабатывать одно или несколько конкретных событий. См. Ручки.
список событий
Требуется, если поставляется
Ручки
. Список событий, которые обрабатывает эта процедура.указатель событий [, указатель событий...]
Каждый указатель событий
eventvariable.event
Деталь Описание переменная события
Обязательно. Переменная объекта, объявленная с типом данных класса или структуры, вызывающей событие. событие
Обязательно. Имя события, которое обрабатывает эта процедура. ведомости
Необязательно. Блок операторов, выполняемых в рамках этой процедуры.
Конечная функция
Завершает определение этой процедуры.
Примечания
Весь исполняемый код должен находиться внутри процедуры. Каждая процедура, в свою очередь, объявляется в классе, структуре или модуле, который называется содержащим классом, структурой или модулем.
Чтобы вернуть значение в вызывающий код, используйте процедуру Function
; в противном случае используйте процедуру Sub
.
Определение функции
Вы можете определить процедуру Function
только на уровне модуля. Следовательно, контекст объявления функции должен быть классом, структурой, модулем или интерфейсом и не может быть исходным файлом, пространством имен, процедурой или блоком. Для получения дополнительной информации см. Контексты объявления и уровни доступа по умолчанию.
Функция
процедур по умолчанию для общего доступа. Вы можете настроить их уровни доступа с помощью модификаторов доступа.
A Функция
процедура может объявить тип данных значения, которое возвращает процедура. Вы можете указать любой тип данных или имя перечисления, структуры, класса или интерфейса. Если вы не укажете параметр типа возврата
, процедура вернет Object
.
Если эта процедура использует ключевое слово Implements
, содержащий класс или структура также должны иметь оператор Implements
, который следует сразу за его оператором Class
или Structure
.Оператор Implements
должен включать каждый интерфейс, указанный в Implementslist
. Однако имя, по которому интерфейс определяет функцию
(в определенное имя
), не обязательно должно совпадать с именем этой процедуры (в имя
).
Возврат из функции
Когда процедура Function
возвращается к вызывающему коду, выполнение продолжается с оператора, следующего за оператором, который вызвал процедуру.
Чтобы вернуть значение из функции, вы можете либо присвоить значение имени функции, либо включить его в оператор Return
.
Оператор Return
одновременно назначает возвращаемое значение и завершает функцию, как показано в следующем примере.
Функция MyFunction (ByVal j как целое число) как Double
Возврат 3.87 * j
Конечная функция
В следующем примере возвращаемое значение присваивается имени функции myFunction
, а затем для возврата используется оператор Exit Function
.
Функция MyFunction (ByVal j как целое число) как Double
MyFunction = 3,87 * j
Функция выхода
Конечная функция
Операторы Exit Function
и Return
вызывают немедленный выход из процедуры Function
. Любое количество операторов Exit Function
и Return
может появляться в любом месте процедуры, и вы можете смешивать операторы Exit Function
и Return
.
Если вы используете функцию выхода
без присвоения значения имени
, процедура возвращает значение по умолчанию для типа данных, указанного в типе возврата
.Если тип возврата
не указан, процедура возвращает Nothing
, что является значением по умолчанию для объекта Object
.
Вызов функции
Вы вызываете процедуру Function
, используя в выражении имя процедуры, за которым следует список аргументов в круглых скобках. Вы можете опустить круглые скобки, только если вы не предоставляете никаких аргументов. Однако ваш код будет более читабельным, если вы всегда будете использовать круглые скобки.
Вы вызываете процедуру Function
так же, как вызываете любую библиотечную функцию, такую как Sqrt
, Cos
или ChrW
.
Вы также можете вызвать функцию с помощью ключевого слова Call
. В этом случае возвращаемое значение игнорируется. Использование ключевого слова Call
в большинстве случаев не рекомендуется. Для получения дополнительной информации см. Заявление о вызове.
Visual Basic иногда переупорядочивает арифметические выражения для повышения внутренней эффективности. По этой причине вам не следует использовать процедуру Function
в арифметическом выражении, когда функция изменяет значение переменных в том же выражении.
Асинхронные функции
Функция Async позволяет вызывать асинхронные функции без использования явных обратных вызовов или ручного разделения кода на несколько функций или лямбда-выражений.
Если вы помечаете функцию модификатором Async, вы можете использовать в функции оператор Await. Когда элемент управления достигает значения Await
в функции Async
, управление возвращается вызывающей стороне, и выполнение функции приостанавливается до завершения ожидаемой задачи.Когда задача завершена, выполнение может возобновиться в функции.
Примечание
Процедура Async
возвращается к вызывающей стороне, когда либо она встречает первый ожидаемый объект, который еще не завершен, либо достигает конца процедуры Async
, в зависимости от того, что произойдет раньше.
Функция Async
может иметь тип возвращаемого значения Task Async
, которая имеет тип возвращаемого значения Task
Функция Async
не может объявлять параметры ByRef.
Подвыражение также можно пометить модификатором Async
. Это в основном используется для обработчиков событий, где значение не может быть возвращено. Процедура Async
Sub
не может быть ожидаема, и вызывающий объект процедуры Async
Sub
не может перехватить исключения, которые генерируются процедурой Sub
.
Дополнительные сведения о функциях Async
см. В разделах «Асинхронное программирование с асинхронным режимом и ожиданием», «Поток управления в асинхронных программах» и «Типы возврата асинхронного сигнала».
Функции итератора
Итератор Функция выполняет настраиваемую итерацию по коллекции, такой как список или массив. Функция итератора использует оператор Yield для возврата каждого элемента по одному. Когда достигается оператор Yield, запоминается текущее место в коде. Выполнение возобновляется с этого места при следующем вызове функции итератора.
Итератор вызывается из клиентского кода с помощью оператора For Each… Next.
Тип возврата функции итератора может быть IEnumerable, IEnumerable
Для получения дополнительной информации см. Итераторы.
Пример
В следующем примере оператор Function
используется для объявления имени, параметров и кода, которые образуют тело процедуры Function
. Модификатор ParamArray
позволяет функции принимать переменное количество аргументов.
Открытая функция CalcSum (ByVal ParamArray args () As Double) As Double
CalcSum = 0
Если args.Length <= 0, тогда выйти из функции
Для i As Integer = 0 To UBound (args, 1)
CalcSum + = args (i)
Далее я
Конечная функция
Пример
В следующем примере вызывается функция, объявленная в предыдущем примере.
Модуль Модуль1
Sub Main ()
'В следующем вызове функции локальные переменные CalcSum
'присваиваются следующие значения: args (0) = 4, args (1) = 3,
' и так далее. Отображаемая сумма равна 10.
Dim returnValue As Double = CalcSum (4, 3, 2, 1)
Console.WriteLine ("Сумма:" & возвращенное значение)
'Параметр args принимает ноль или более аргументов. Сумма
', отображаемое следующими операторами, равно 0.
returnValue = CalcSum ()
Консоль.WriteLine ("Сумма:" и возвращенное значение)
Конец подписки
Открытая функция CalcSum (ByVal ParamArray args () As Double) As Double
CalcSum = 0
Если args.Length <= 0, тогда выйти из функции
Для i As Integer = 0 To UBound (args, 1)
CalcSum + = args (i)
Далее я
Конечная функция
Конечный модуль
Пример
В следующем примере DelayAsync
- это Async
Function
, который имеет тип возврата Task DelayAsync
имеет оператор Return
, который возвращает целое число. Следовательно, объявление функции DelayAsync
должно иметь тип возврата Task (Of Integer)
. Поскольку тип возврата - Task (Of Integer)
, оценка выражения Await
в DoSomethingAsync
дает целое число. Это демонстрируется в следующем операторе: Dim result As Integer = Await delayTask
.
Процедура startButton_Click
является примером процедуры Async Sub
.Поскольку DoSomethingAsync
- это функция Async
, задача для вызова DoSomethingAsync
должна ожидаться, как демонстрирует следующий оператор: Await DoSomethingAsync ()
. Процедура startButton_Click
Sub
должна быть определена с модификатором Async
, поскольку она имеет выражение Await
.
'Импорт System.Diagnostics
'Импортирует System.Threading.Tasks
'Это событие Click помечено модификатором Async.Private Async Sub startButton_Click (sender As Object, e As RoutedEventArgs) Обрабатывает startButton.Click
Ожидание DoSomethingAsync ()
Конец подписки
Частная асинхронная функция DoSomethingAsync () как задача
Dim delayTask As Task (Of Integer) = DelayAsync ()
Уменьшить результат как целое число = Await delayTask
'Предыдущие два утверждения могут быть объединены в
'следующее заявление.
'Уменьшить результат как целое число = Await DelayAsync ()
Debug.WriteLine ("Результат:" & результат)
Конечная функция
Частная асинхронная функция DelayAsync () как задача (целого числа)
Ожидание задачи.Задержка (100)
Возврат 5
Конечная функция
' Выход:
Результат: 5
См. Также
.
Строковых функций - Visual Basic
- 5 минут на чтение
В этой статье
В следующей таблице перечислены функции, которые Visual Basic предоставляет в классе Microsoft.VisualBasic.Strings для поиска строк и управления ими. Их можно рассматривать как внутренние функции Visual Basic; то есть вам не нужно называть их явными членами класса, как показывают примеры.Дополнительные методы, а в некоторых случаях и дополнительные методы доступны в классе System.String.
Метод .NET Framework | Описание |
---|---|
по возрастанию, по возрастанию | Возвращает значение Integer , представляющее код символа, соответствующий символу. |
Chr, ChrW | Возвращает символ, связанный с указанным кодом символа. |
Фильтр | Возвращает отсчитываемый от нуля массив, содержащий подмножество массива String на основе заданных критериев фильтрации. |
Формат | Возвращает строку, отформатированную в соответствии с инструкциями, содержащимися в формате String expression. |
Формат Валюта | Возвращает выражение, отформатированное как значение валюты с использованием символа валюты, определенного на панели управления системы. |
FormatDateTime | Возвращает строковое выражение, представляющее значение даты / времени. |
Номер формата | Возвращает выражение в формате числа. |
Формат Процент | Возвращает выражение, отформатированное в процентах (то есть умноженное на 100), с завершающим символом%. |
ИнСтр | Возвращает целое число, определяющее начальную позицию первого вхождения одной строки в другую. |
InStrRev | Возвращает позицию первого вхождения одной строки в другую, начиная с правой стороны строки. |
Присоединиться | Возвращает строку, созданную путем объединения ряда подстрок, содержащихся в массиве. |
LCase | Возвращает строку или символ, преобразованные в нижний регистр. |
Левый | Возвращает строку, содержащую указанное количество символов с левой стороны строки. |
Лен | Возвращает целое число, содержащее количество символов в строке. |
LSet | Возвращает выровненную по левому краю строку, содержащую указанную строку, настроенную на указанную длину. |
LTrim | Возвращает строку, содержащую копию указанной строки без начальных пробелов. |
Средняя | Возвращает строку, содержащую указанное количество символов из строки. |
Заменить | Возвращает строку, в которой указанная подстрока была заменена другой подстрокой указанное количество раз. |
Правый | Возвращает строку, содержащую указанное количество символов с правой стороны строки. |
RSet | Возвращает выровненную по правому краю строку, содержащую указанную строку, настроенную на указанную длину. |
RTrim | Возвращает строку, содержащую копию указанной строки без конечных пробелов. |
Космос | Возвращает строку, состоящую из указанного количества пробелов. |
Сплит | Возвращает отсчитываемый от нуля одномерный массив, содержащий указанное количество подстрок. |
StrComp | Возвращает -1, 0 или 1 в зависимости от результата сравнения строк. |
StrConv | Возвращает строку, преобразованную, как указано. |
StrDup | Возвращает строку или объект, состоящий из указанного символа, повторяющегося указанное количество раз. |
StrReverse | Возвращает строку, в которой порядок символов указанной строки обратный. |
Накладка | Возвращает строку, содержащую копию указанной строки без начальных и конечных пробелов. |
UCase | Возвращает строку или символ, содержащий указанную строку, преобразованную в верхний регистр. |
Вы можете использовать оператор Option Compare, чтобы указать, сравниваются ли строки с использованием порядка сортировки текста без учета регистра, определяемого языковым стандартом вашей системы ( Text
) или внутренними двоичными представлениями символов ( Binary
). Метод сравнения текста по умолчанию - Binary
.
Пример: UCase
В этом примере используется функция UCase
для возврата версии строки в верхнем регистре.
'Строка для преобразования.
Dim lowerCase As String = "Hello World 1234"
'Возвращает «ПРИВЕТ МИР 1234».
Уменьшить верхний регистр как строку = UCase (нижний регистр)
Пример: LTrim
В этом примере используется функция LTrim
для удаления начальных пробелов и функция RTrim
для удаления конечных пробелов из строковой переменной. Он использует функцию Trim
для удаления обоих типов пробелов.
'Инициализирует строку.
Dim testString As String = "<-Trim->"
Dim trimString As String
'Возвращает "<-Trim->".trimString = LTrim (testString)
'Возвращает "<-Trim->".
trimString = RTrim (testString)
'Возвращает "<-Trim->".
trimString = LTrim (RTrim (testString))
'Использование только функции обрезки дает тот же результат.
'Возвращает "<-Trim->".
trimString = Обрезать (testString)
Пример: середина
В этом примере используется функция Mid
для возврата указанного количества символов из строки.
'Создает текстовую строку.
Dim testString As String = "Демонстрация средней функции"
'Возвращает "Mid".Уменьшить значение firstWord как String = Mid (testString, 1, 3)
'Возвращает «Демо».
Уменьшить последнее слово как String = Mid (testString, 14, 4)
'Возвращает «Демо функции».
Dim midWords As String = Mid (testString, 5)
Пример: Len
В этом примере используется Len
для возврата количества символов в строке.
'Инициализирует переменную.
Dim testString As String = "Hello World"
'Возврат 11.
Dim testLen как целое число = Len (testString)
Пример: InStr
В этом примере используется функция InStr
для возврата позиции первого вхождения одной строки в другую.
'Строка для поиска.
Уменьшить searchString как String = "XXpXXpXXPXXP"
'Найдите "P".
Тусклый searchChar As String = "P"
Dim testPos As Integer
'Текстовое сравнение, начиная с позиции 4. Возвращает 6.
testPos = InStr (4, searchString, searchChar, CompareMethod.Text)
'Бинарное сравнение, начиная с позиции 1. Возвращает 9.
testPos = InStr (1, SearchString, SearchChar, CompareMethod.Binary)
'Если Option Compare не установлен или установлен на Binary, вернуть 9.
'Если для Option Compare установлено значение Text, возвращается 3.testPos = InStr (searchString, searchChar)
'Возвращает 0.
testPos = InStr (1, searchString, "W")
Пример: Формат
В этом примере показаны различные варианты использования функции Format
для форматирования значений с использованием как форматов String,
, так и пользовательских форматов. Для разделителя даты (/
), разделителя времени (:
) и индикаторов AM / PM ( t
и tt
) фактический форматированный вывод, отображаемый вашей системой, зависит от настроек локали. с помощью.Когда время и даты отображаются в среде разработки, используются краткий формат времени и краткий формат даты локали кода.
Примечание
Для регионов, в которых используется 24-часовой формат времени, индикаторы AM / PM ( t
и tt
) ничего не отображают.
Dim testDateTime As Date = # 1/27/2001 5:04:23 PM #
Dim testStr как строка
'Возвращает текущее системное время в определенном системой долгом формате.
testStr = Формат (Сейчас (), «Долгое время»)
'Возвращает текущую системную дату в определяемом системой длинном формате даты.testStr = Format (Now (), «Длинная дата»)
'Также возвращает текущую системную дату в определенной системой длинной дате
'формат, используя однобуквенный код формата.
testStr = Format (Now (), "D")
'Возвращает значение testDateTime в определяемых пользователем форматах даты / времени.
'Возвращает "5: 4: 23".
testStr = Format (testDateTime, "ч: мин: с")
'Возвращает «17:04:23 PM».
testStr = Format (testDateTime, «чч: мм: сс тт»)
«Возвращает« Суббота, 27 января 2001 ».
testStr = Format (testDateTime, «дддд, МММ д гггг»)
'Возвращает «17:04:23».
testStr = Format (testDateTime, «ЧЧ: мм: сс»)
'Возвращает "23".testStr = Формат (23)
'Пользовательские числовые форматы.
'Возвращает "5 459,40".
testStr = Format (5459.4, "##, ## 0.00")
'Возвращает "334,90".
testStr = Format (334.9, "### 0,00")
'Возвращает "500.00%".
testStr = Format (5, "0,00%")
См. Также
.
Функциональные процедуры - Visual Basic
- 3 минуты на чтение
В этой статье
A Function
процедура - это серия операторов Visual Basic, заключенных в операторы Function
и End Function
. Процедура Function
выполняет задачу и затем возвращает управление вызывающему коду.Когда он возвращает управление, он также возвращает значение вызывающему коду.
Каждый раз, когда вызывается процедура, выполняются ее операторы, начиная с первого исполняемого оператора после оператора Function
и заканчивая первым обнаруженным оператором End Function
, Exit Function
или Return
.
Вы можете определить процедуру Function
в модуле, классе или структуре. По умолчанию это Public
, что означает, что вы можете вызывать его из любого места вашего приложения, у которого есть доступ к модулю, классу или структуре, в которой вы его определили.
Процедура Function
может принимать аргументы, такие как константы, переменные или выражения, которые передаются ей вызывающим кодом.
Синтаксис объявления
Синтаксис объявления процедуры Function
следующий:
[Модификаторы] Функция FunctionName [(ParameterList)] As ReturnType
[Заявления]
Конечная функция
Модификаторы могут определять уровень доступа и информацию, касающуюся перегрузки, переопределения, совместного использования и теневого копирования.Для получения дополнительной информации см. Оператор функции.
Вы объявляете каждый параметр так же, как и для подпроцедур.
Тип данных
Каждая функция Функция
, как и каждая переменная, имеет тип данных. Этот тип данных определяется предложением As
в операторе Function
и определяет тип данных значения, которое функция возвращает вызывающему коду. Следующие примеры объявлений иллюстрируют это.
Функция вчера () как дата
Конечная функция
Функция FindSqrt (подкоренное выражение как одиночное) как одиночное
Конечная функция
Для получения дополнительной информации см. «Детали» в описании функции.
Возврат значений
Значение, которое процедура Function
отправляет обратно вызывающему коду, называется его возвращаемым значением. Процедура возвращает это значение одним из двух способов:
Он использует оператор
Return
для указания возвращаемого значения и немедленно возвращает управление вызывающей программе. Следующий пример иллюстрирует это.Функция FunctionName [(ParameterList)] как ReturnType 'Следующее утверждение немедленно возвращает управление 'в вызывающий код и возвращает значение Expression.Возвратное выражение Конечная функция
Он присваивает значение собственному имени функции в одном или нескольких операторах процедуры. Управление не возвращается к вызывающей программе до тех пор, пока не будет выполнен оператор
Exit Function
илиEnd Function
. Следующий пример иллюстрирует это.Функция FunctionName [(ParameterList)] как ReturnType 'Следующая инструкция не передает управление обратно вызывающему коду. FunctionName = Выражение 'Когда управление возвращается к вызывающему коду, возвращаемое значение - Expression.Конечная функция
Преимущество присвоения возвращаемого значения имени функции состоит в том, что управление не возвращается из процедуры, пока не встретит оператор Exit Function
или End Function
. Это позволяет вам назначить предварительное значение и при необходимости изменить его позже.
Для получения дополнительной информации о возвращаемых значениях см. Оператор функции. Для получения информации о возврате массивов см. Массивы.
Синтаксис вызова
Вы вызываете процедуру Function
, включив ее имя и аргументы либо в правую часть оператора присваивания, либо в выражение.Вы должны предоставить значения для всех аргументов, которые не являются необязательными, и вы должны заключить список аргументов в круглые скобки. Если аргументы не указаны, вы можете опустить круглые скобки.
Синтаксис вызова процедуры Function
следующий.
lvalue =
имя функции [(
список аргументов )]
Если ((
имя функции [(
список аргументов )] / 3) <=
выражение ) То
Когда вы вызываете процедуру Function
, вам не нужно использовать ее возвращаемое значение.2))
Конечная функция
В следующем примере показан типичный вызов гипотенузы
.
Тусклый тест Длина, тест Гипотенуза как двойной
testHypotenuse = Гипотенуза (testLength, 10,7)
См. Также
.
математических функций - Visual Basic
- 5 минут на чтение
В этой статье
Методы класса System.Math предоставляют тригонометрические, логарифмические и другие общие математические функции.
Замечания
В следующей таблице перечислены методы System.Класс математики. Вы можете использовать их в программе Visual Basic:
.NET метод | Описание |
---|---|
Абс | Возвращает абсолютное значение числа. |
Acos | Возвращает угол, косинус которого является указанным числом. |
Асин | Возвращает угол, синус которого является указанным числом. |
Атан | Возвращает угол, тангенс которого является заданным числом. |
Атан2 | Возвращает угол, тангенс которого является частным от двух указанных чисел. |
BigMul | Возвращает полное произведение двух 32-битных чисел. |
Потолок | Возвращает наименьшее целое значение, которое больше или равно заданному Decimal или Double . |
Cos | Возвращает косинус указанного угла. |
Cosh | Возвращает гиперболический косинус указанного угла. |
DivRem | Возвращает частное двух 32-битных или 64-битных целых чисел со знаком, а также возвращает остаток в выходном параметре. |
Опыт | Возвращает значение e (основание натурального логарифма) в заданной степени. |
Этаж | Возвращает наибольшее целое число, меньшее или равное указанному Decimal или Double number. |
IEEERemainder | Возвращает остаток от деления указанного числа на другое указанное число. |
Журнал | Возвращает натуральный (основание е) логарифм указанного числа или логарифм указанного числа по указанному основанию. |
Лог10 | Возвращает десятичный логарифм указанного числа. |
Макс | Возвращает большее из двух чисел. |
Мин. | Возвращает меньшее из двух чисел. |
Pow | Возвращает указанное число в указанной степени. |
Круглый | Возвращает значение Decimal или Double , округленное до ближайшего целого значения или до указанного количества дробных цифр. |
Знак | Возвращает значение Integer , указывающее знак числа. |
Грех | Возвращает синус указанного угла. |
Синх | Возвращает гиперболический синус указанного угла. |
Площадь | Возвращает квадратный корень указанного числа. |
Желто-коричневый | Возвращает тангенс указанного угла. |
Танх | Возвращает гиперболический тангенс указанного угла. |
Усечь | Вычисляет целую часть указанного числа Decimal или Double . |
В следующей таблице перечислены методы класса System.Math, которые не существуют в .NET Framework, но добавлены в .NET Standard или.NET Core:
.NET метод | Описание | Доступен в | |
---|---|---|---|
Acosh | Возвращает угол, гиперболический косинус которого является заданным числом. | Начиная с .NET Core 2.1 и .NET Standard 2.1 | |
Асин | Возвращает угол, гиперболический синус которого является заданным числом. | Начиная с .NET Core 2.1 и .NET Standard 2.1 | |
Атан | Возвращает угол, гиперболический тангенс которого равен заданному числу. | Начиная с .NET Core 2.1 и .NET Standard 2.1 | |
BitDecrement | Возвращает следующее наименьшее значение для сравнения меньше x . | Начиная с .NET Core 3.0 | |
BitIncrement | Возвращает следующее по величине значение, превышающее x . | Начиная с .NET Core 3.0 | |
Cbrt | Возвращает кубический корень указанного числа. | Начиная с.NET Core 2.1 и .NET Standard 2.1 | |
Зажим | Возвращает значение , ограниченное включенным диапазоном мин. и макс. . | Начиная с .NET Core 2.0 и .NET Standard 2.1 | |
CopySign | Возвращает значение с величиной x и знаком y . | Начиная с .NET Core 3.0 | |
FusedMultiply Добавить | Возвращает (x * y) + z, округленное как одну тернарную операцию. | Начиная с .NET Core 3.0 | |
ILogB | Возвращает логарифм целого числа с основанием 2 указанного числа. | Начиная с .NET Core 3.0 | |
Лог2 | Возвращает логарифм по основанию 2 указанного числа. | Начиная с .NET Core 3.0 | |
Максимальная величина | Возвращает большую величину двух чисел с плавающей запятой двойной точности. | Начиная с .NET Core 3.n вычислено эффективно. | Начиная с .NET Core 3.0 |
Чтобы использовать эти функции без квалификации, импортируйте пространство имен System.Math в свой проект, добавив следующий код в верхнюю часть исходного файла:
Импорт System.Math
Пример - Abs
В этом примере используется метод Abs класса Math для вычисления абсолютного значения числа.
Dim x As Double = Math.Abs (50,3)
Dim y As Double = Math.Абс (-50,3)
Console.WriteLine (x)
Console.WriteLine (y)
'Этот пример дает следующий результат:
50,3
50,3
Пример - Атан
В этом примере используется метод Atan класса Math для вычисления значения числа пи.
Открытая функция GetPi () как двойная
'Вычислите значение числа пи.
Возврат 4.0 * Math.Atan (1.0)
Конечная функция
Примечание
Класс System.Math содержит поле констант Math.PI. Вы можете использовать его, а не рассчитывать.
Пример - Cos
В этом примере используется метод Cos класса Math для возврата косинуса угла.
Public Function Sec (угол как двойной) как двойной
'Вычислите секанс угла в радианах.
Возврат 1.0 / Math.Cos (угол)
Конечная функция
Пример - Опыт
В этом примере используется метод Exp класса Math для возврата e в степени.
Общедоступная функция Sinh (угол как двойной) как двойной
'Вычислить гиперболический синус угла в радианах.Возврат (Math.Exp (угол) - Math.Exp (-angle)) / 2.0
Конечная функция
Пример - протокол
В этом примере используется метод Log класса Math для возврата натурального логарифма числа.
Открытая функция Asinh (значение как двойное) как двойное
'Вычислить обратный гиперболический синус в радианах.
Вернуть Math.Log (значение + Math.Sqrt (значение * значение + 1.0))
Конечная функция
Пример - раунд
В этом примере используется метод Round класса Math для округления числа до ближайшего целого числа.
Dim myVar2 As Double = Math.Round (2,8)
Console.WriteLine (myVar2)
'Код дает следующий результат:
'3
Пример - Знак
В этом примере используется метод Sign класса Math для определения знака числа.
Dim mySign1 As Integer = Math.Sign (12)
Dim mySign2 As Integer = Math.Sign (-2,4)
Dim mySign3 As Integer = Math.Sign (0)
Console.WriteLine (mySign1)
Console.WriteLine (mySign2)
Console.WriteLine (mySign3)
'Код дает следующий результат:
'1
'-1
'0
Пример - Sin
В этом примере используется метод Sin класса Math для возврата синуса угла.
Общедоступная функция Csc (угол как двойной) как двойной
'Вычислить косеканс угла в радианах.
Возврат 1.0 / Math.Sin (угол)
Конечная функция
Пример - Sqrt
В этом примере используется метод Sqrt класса Math для вычисления квадратного корня числа.
Dim mySqrt1 As Double = Math.Sqrt (4)
Dim mySqrt2 As Double = Math.Sqrt (23)
Dim mySqrt3 As Double = Math.Sqrt (0)
Dim mySqrt4 As Double = Math.Sqrt (-4)
Console.WriteLine (mySqrt1)
Консоль.WriteLine (mySqrt2)
Console.WriteLine (mySqrt3)
Console.WriteLine (mySqrt4)
'Код дает следующий результат:
'2
'4.79583152331272
'0
'NaN
Пример - Желто-коричневый
В этом примере используется метод Tan класса Math для возврата тангенса угла.
Общедоступная функция Ctan (угол как двойной) как двойной
'Вычислить котангенс угла в радианах.
Возврат 1.0 / Math.Tan (угол)
Конечная функция
См. Также
.