Разное

Функции в 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 the Return 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 an Exit Function or End 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) <= выражение ) ThenIf (( 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 if Option Strict is On. Тип данных значения, возвращаемого этой процедурой.Data type of the value returned by this procedure.

  • Implements

    Необязательный элемент.Optional. Указывает, что эта процедура реализует одну или несколько Function процедур, каждая из которых определена в интерфейсе, реализованном классом или структурой этой процедуры.Indicates that this procedure implements one or more Function procedures, each one defined in an interface implemented by this procedure’s containing class or structure. См. инструкцию Implements.See Implements Statement.

  • implementslist

    Является обязательным, если предоставлен параметр Implements.Required if Implements is supplied. Список реализуемых процедур Function.List of Function procedures being implemented.

    implementedprocedure [ , implementedprocedure ... ]

    Каждый элемент implementedprocedure имеет перечисленные ниже синтаксис и компоненты.Each implementedprocedure 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 in interface.
  • Handles

    Необязательный элемент.Optional. Указывает, что эта процедура может управлять одним или несколькими конкретными событиями.Indicates that this procedure can handle one or more specific events. См. раздел Handles.See Handles.

  • eventlist

    Является обязательным, если предоставлен параметр Handles.Required if Handles is supplied. Список событий, обрабатываемых этой процедурой.List of events this procedure handles.

    eventspecifier [ , eventspecifier ... ]

    Каждый элемент eventspecifier имеет перечисленные ниже синтаксис и компоненты.Each eventspecifier 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. Однако имя, по которому интерфейс определяет Functiondefinedname ), не обязательно должно совпадать с именем этой процедуры (в 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 – по ссылке).

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

Проект «Передача по ссылке и по значению»

Задание.Создать проект, в котором описывается процедура, один параметр которой передается по ссылке, а другой – по значению. Значения параметров внутри процедуры изменяются. В вызывающей процедуре переменным присваиваются начальные значения, производится вызов процедуры с указанием переменных в качестве фактических параметров. После выполнения процедуры значения переменных выводятся на надписи.

  1. Разместить на форме:
    • текстовые поля TextBox1 и TextBox2 для вывода начальных значений переменных;
    • надписи Label1 и Label2 для вывода конечного значения переменных;
    • кнопку button1 для создания процедуры-обработчика события;
    • четыре надписи для вывода поясняющих текстов.

    В программном коде процедуры первый параметр X передается по ссылке, а второй параметр Y передается по значению.

    Создадим программный код проекта, в котором:

    • объявим переменные;
    • создадим процедуру, умножающую значение переменных, передаваемых по ссылке и по значению, на коэффициент 5;
    • создадим обработчик, реализующих присваивание переменным начальных значений, вызов первой процедуры и осуществляющий вывод ключевых значений переменных на надписи.
  2. Объявить переменные и создать код вызываемой процедуры:
     Dim RefA, ValB As Byte
     Sub refVal(ByRef RefA, ByVal ValB)
        RefA = RefA * 5
        ValB = ValB * 5
     End Sub
  3. Создать код вызывающей процедуры-обработчика события:
    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
  4. Запустить проект на выполнение и вывести в текстовые поля начальные значения переменных (например, 3). На надписи будут выведены конечные значения переменной, передаваемое по ссылке (в данном случае, 15), и переменной, передаваемой по значению (в данном случае 3).Значение переменной, передаваемое по значению, не изменилось.Что и требовалось доказать!

Подпрограмма типа Function

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

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

Программист может создавать свои функции.

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

Общий вид описания функции:

Function название_функции ([параметры]) As тип
	операторы_функции
	[Return значение]
End Function

Здесь:

  • название_функции — имя создаваемой вами функции.
  • As тип — пара ключевых слов, которые определяют тип возвращаемого функцией значения.
  • параметры — необязательный список параметров, используемых в данной функции.
  • операторы_функции — это блок операторов, который выполняет работу функции.
  • Return — новый оператор Visual Basic .NET. Он позволяет указать, когда нужно выйти из функции, чтобы возвратить значение в вызывающую программу, и каково это возвращаемое значение.В качестве альтернативы можно использовать синтаксис Visual Basic 6 и возвращать значение в вызывающий код, присвоив значение имени функции.

Вызов подпрограммы типа Function

Для вызова функцию в программе, необходимо поместить в оператор программы имя этой функции и все требуемые для нее аргументы (фактические параметры).

Пример вызова функции в операторе присваивания:

Имя_переменной = название_функции(фактические параметры)
Проект «Функция»

Задание. Создать проект, в котором определяется функция (например, умножения двух чисел F = x*y), выводится на надпись значение функции.

  1. Разместить на форме:
    • для вывода значений аргументов два текстовых поля TextBox1 и TextBox20;
    • для вывода значений функции надпись label1;
    • для создания обработчика события кнопку Button1.
  2. Создать код вызываемой функции:
    Function F(ByVal x, ByVal y) As Integer
            F = x * y
        End Function
  3. Объявить переменные и создать код вызывающей  процедуры-обработчика:
    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
  4. Запустить проект на выполнение и ввести в текстовые поля значения переменных (например, 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 a Return statement, control returns immediately to the calling code. Операторы, следующие за оператором Return, не выполняются.Statements following the Return statement do not run. В одной и той же процедуре можно использовать несколько операторов Return.You can have more than one Return statement in the same procedure.

  • При использовании операторов Exit Sub или Exit Function управление немедленно возвращается в вызывающий код.With an Exit Sub or Exit Function statement, control returns immediately to the calling code. Операторы, следующие за оператором Exit, не выполняются.Statements following the Exit statement do not run. В одной и той же процедуре можно использовать несколько операторов Exit и одновременно использовать операторы Return и Exit.You can have more than one Exit statement in the same procedure, and you can mix Return and Exit statements in the same procedure.

  • Если процедура не содержит операторов Return или Exit, она завершается оператором End Sub, End Function, End Get или End Set, который следует за последним оператором в составе процедуры.If a procedure has no Return or Exit statements, it concludes with an End Sub or End Function, End Get, or End Set statement following the last statement of the procedure body. При использовании оператора End управление немедленно возвращается в вызывающий код.The End statement returns control immediately to the calling code. В процедуре можно использовать только один оператор End.You can have only one End 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 are Sub 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 или Task. Ниже приведен пример функции Async , которая имеет тип возвращаемого значения Task .

Функция Async не может объявлять параметры ByRef.

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

Дополнительные сведения о функциях Async см. В разделах «Асинхронное программирование с асинхронным режимом и ожиданием», «Поток управления в асинхронных программах» и «Типы возврата асинхронного сигнала».

Функции итератора

Итератор Функция выполняет настраиваемую итерацию по коллекции, такой как список или массив. Функция итератора использует оператор Yield для возврата каждого элемента по одному. Когда достигается оператор Yield, запоминается текущее место в коде. Выполнение возобновляется с этого места при следующем вызове функции итератора.

Итератор вызывается из клиентского кода с помощью оператора For Each… Next.

Тип возврата функции итератора может быть IEnumerable, IEnumerable, IEnumerator или IEnumerator.

Для получения дополнительной информации см. Итераторы.

Пример

В следующем примере оператор 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 (угол)
Конечная функция
  

См. Также

.

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

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