다음을 통해 공유


Function 문(Visual Basic)

Function 프로시저를 정의하는 이름, 매개 변수 및 코드를 선언합니다.

[ <attributelist> ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ] [ Async | Iterator ]
Function name [ (Of typeparamlist) ] [ (parameterlist) ] [ As returntype ] [ Implements implementslist | Handles eventlist ]
    [ statements ]
    [ Exit Function ]
    [ statements ]
End Function

요소

용어

정의

attributelist

선택 사항입니다. 특성 목록을 참조하십시오.

accessmodifier

선택 사항입니다. 다음 중 하나일 수 있습니다.

자세한 내용은 Visual Basic의 액세스 수준를 참조하십시오.

proceduremodifiers

선택 사항입니다. 다음 중 하나일 수 있습니다.

Shared

선택 사항입니다. Shared를 참조하십시오.

Shadows

선택 사항입니다. Shadows를 참조하십시오.

Async

선택 사항입니다. 볼 비동기.

Iterator

선택 사항입니다. 볼 반복기.

name

필수 요소. 프로시저의 이름입니다. 자세한 내용은 선언된 요소 이름(Visual Basic)를 참조하십시오.

typeparamlist

선택 사항입니다. 제네릭 프로시저의 형식 매개 변수 목록입니다. 형식 목록을 참조하십시오.

parameterlist

선택 사항입니다. 이 프로시저의 매개 변수를 나타내는 지역 변수 이름 목록입니다. 자세한 내용은 매개 변수 목록(Visual Basic)를 참조하십시오.

returntype

Option Strict가 On이면 필수적 요소입니다. 이 프로시저에서 반환되는 값의 데이터 형식입니다.

Implements

선택 사항입니다. 이 프로시저에서 하나 이상의 Function 프로시저를 구현하며 각 프로시저가 이 프로시저의 포함하는 클래스 또는 구조체에서 구현되는 인터페이스에 정의되었음을 나타냅니다. 자세한 내용은 Implements 문를 참조하십시오.

implementslist

Implements문을 사용할 경우 필수적 요소입니다. 구현될 Function 프로시저 목록입니다.

implementedprocedure [ , implementedprocedure ... ]

각 implementedprocedure의 구문과 구성 요소는 다음과 같습니다.

interface.definedname

파트

설명

interface

필수 요소. 이 프로시저의 포함하는 클래스 또는 구조체에 의해 구현되는 인터페이스의 이름입니다.

definedname

필수 요소. 프로시저를 interface에 정의할 때 사용되는 이름입니다.

Handles

선택 사항입니다. 이 프로시저에서 하나 이상의 특정 이벤트를 처리할 수 있음을 나타냅니다. 자세한 내용은 Handles 절(Visual Basic)를 참조하십시오.

eventlist

Handles를 제공하는 경우 필수적 요소입니다. 이 프로시저에서 처리하는 이벤트 목록입니다.

eventspecifier [ , eventspecifier ... ]

각 eventspecifier의 구문과 구성 요소는 다음과 같습니다.

eventvariable.event

파트

설명

eventvariable

필수 요소. 이벤트를 발생시키는 클래스 또는 구조체의 데이터 형식으로 선언된 개체 변수입니다.

event

필수 요소. 이 프로시저에서 처리하는 이벤트의 이름입니다.

statements

선택 사항입니다. 이 프로시저 내에서 실행될 문 블록입니다.

End Function

이 프로시저의 정의를 종료합니다.

설명

모든 실행 코드는 프로시저 내에 있어야 합니다. 각 프로시저, 클래스, 구조체, 포함 된 클래스, 구조체 또는 모듈 이름으로 참조 되는 모듈 내에서 선언 됩니다.

사용 하 여 값을 호출 코드로 반환 하는 Function 프로시저. 그렇지 않으면 사용 하는 Sub 프로시저.

함수를 정의합니다.

정의할 수 있는 Function 프로시저는 모듈 수준 에서만. 따라서 함수에 대 한 선언 컨텍스트 클래스, 구조체, 모듈 또는 인터페이스 여야 하며 소스 파일, 네임 스페이스, 프로시저 또는 블록 될 수 없습니다. 자세한 내용은 선언 컨텍스트 및 기본 액세스 수준(Visual Basic)을 참조하십시오.

Function 프로시저는 기본적으로 공용 액세스입니다. 액세스 한정자를 사용하여 액세스 수준을 조정할 수 있습니다.

A Function 프로시저는 프로시저가 반환 하는 값의 데이터 형식을 선언할 수 있습니다. 열거형, 구조체, 클래스 또는 인터페이스의 이름 또는 모든 데이터 형식을 지정할 수 있습니다. 지정 하지 않은 경우는 returntype 프로시저 매개 변수, 반환 Object.

이 절차를 사용 하는 경우는 Implements 키워드, 클래스 또는 구조체도 있어야는 Implements 문 바로 다음에 오는 해당 Class 또는 Structure 문. Implements 문에 지정 된 각 인터페이스를 포함 해야 implementslist. 그러나 인터페이스를 정의 하는 이름에 Function (에서 definedname)이이 절차의 이름과 일치 하지 않아도 (에서 name).

참고

람다 식은 식 인라인 함수를 정의할 수 있습니다.자세한 내용은 함수 식(Visual Basic)람다 식(Visual Basic)를 참조하십시오.

함수에서 반환

경우는 Function 프로시저가 호출 코드로 반환, 프로시저를 호출한 문 다음에 오는 문으로 실행이 계속 됩니다.

함수에서 값을 반환하려면 함수 이름에 값을 할당하거나 Return 문에 값을 포함합니다.

Return 문은 동시에 반환 값을 할당 하 고 다음 예제와 같이 함수를 끝냅니다.

Function myFunction(ByVal j As Integer) As Double 
    Return 3.87 * j
End Function

다음 예제에서는 함수 이름 myFunction에 반환 값을 할당한 다음 Exit Function 문을 사용하여 해당 값을 반환합니다.

Function myFunction(ByVal j As Integer) As Double
    myFunction = 3.87 * j
    Exit Function 
End Function

Exit Function 및 Return 문은 Function 프로시저를 즉시 끝냅니다. 프로시저 내의 임의의 위치에 여러 개의 Exit Function 및 Return 문을 사용할 수 있으며 Exit Function 문과 Return 문을 혼합하여 사용할 수 있습니다.

사용 하는 경우 Exit Function 에 값을 할당 하지 않고 name을 프로시저에 지정 된 데이터 형식의 기본값을 반환 합니다. returntype. 경우 returntype 프로시저가 반환 지정 되지 않은 Nothing, 기본 값을 Object.

함수 호출

Function 프로시저를 호출하려면 식에 프로시저 이름과 괄호로 묶은 인수 목록을 차례로 사용합니다. 만 모든 인수를 제공 하지 않는 경우 괄호를 생략 해도 됩니다. 그러나 항상 괄호를 포함하면 코드를 보다 쉽게 읽을 수 있습니다.

호출 된 Function 같은 동일한 방식으로 라이브러리를 호출 하는 함수 프로시저 Sqrt, Cos, 또는 ChrW.

사용 하 여 함수를 호출할 수 있는 Call 키워드입니다. 이 경우 반환 값은 무시 됩니다. 사용 하는 Call 키워드는 대부분의 권장 되지 않습니다. 자세한 내용은 Call 문(Visual Basic)을 참조하십시오.

Visual Basic에서는 내부 효율성을 향상시키기 위해 산술식을 다시 정렬하기도 합니다. 이러한 이유로 사용 하면 안 되는 Function 함수가 같은 식에서 변수 값을 변경 하는 경우에 산술식에 대 한 절차입니다.

비동기 기능

비동기 기능은 비동기 함수의 명시적 콜백을 사용 하 여 또는 수동으로 코드를 여러 개의 함수 또는 람다 식을 분할 하지 않고도 호출할 수 있습니다.

함수를 표시 하는 경우는 비동기 한정자를 사용할 수의 Await 연산자 함수에서. 때 충전을 제어는 Await 식에는 Async 함수를 제어를 호출자에 게 반환 하 고 함수에서 진행 중인 바뀌게 작업이 완료 될 때까지 일시 중단 합니다. 작업이 완료 되 면 함수에서 실행을 계속 수 있습니다.

참고

Async 프로시저 중 아직 완료 되지 않은 첫 번째 바뀌게 개체를 발견 하면 호출자에 게 반환 하거나 끝에 가져옵니다에서 Async 절차 중 발생 처음.

Async 함수는 반환 형식을 가질 수 있습니다 Task 또는 Task. 예로 Async 의 반환 형식이 있는 함수 Task 아래에 나와 있습니다.

Async 함수는 선언할 수 없습니다 ByRef 매개 변수입니다.

A Sub 문(Visual Basic) 로 표시 될 수 있는 Async 한정자. 위치 값을 반환할 수 없습니다이 이벤트 처리기에 대 한 주로 사용 됩니다. AsyncSub 절차를 갖 수 없습니다 및 호출자는 AsyncSub 프로시저에서 throw 되는 예외를 catch 수 없습니다의 Sub 프로시저.

에 대 한 자세한 내용은 Async 함수를 참조 하십시오 Async 및 Await를 사용한 비동기 프로그래밍(C# 및 Visual Basic), 비동기 프로그램의 제어 흐름(C# 및 Visual Basic), 및 비동기 반환 형식(C# 및 Visual Basic).

반복기 기능

반복기 기능 목록 또는 배열 등의 컬렉션에서 사용자 지정 반복을 수행 합니다. 반복기 함수를 사용 하 여 양보 문은 각 요소는 한 번에 반환 합니다. 경우는 양보 코드에서 현재 위치 문의 도달 기억 됩니다. 실행 위치에서 다음 반복기 함수가 호출 될 때 다시 시작 됩니다.

사용 하 여 반복기 클라이언트 코드에서 호출 된 각...다음 문.

반복기 함수의 반환 형식을 사용할 수 있습니다 IEnumerable, IEnumerable, IEnumerator, 또는 IEnumerator.

자세한 내용은 반복기(C# 및 Visual Basic)을 참조하십시오.

예제

다음 예제에서는 Function 문을 사용하여 Function 프로시저의 본문을 형성하는 이름, 매개 변수 및 코드를 선언합니다. ParamArray 한정자를 사용하면 함수에 여러 가지 인수를 사용할 수 있습니다.

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

다음 예제에서는 앞의 예제에서 선언한 함수를 호출합니다.

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

다음 예제에서 DelayAsync 되는 AsyncFunction 반환 유형을 가진 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_ClickSub 프로시저를 정의할 수는 Async 한정자 때문에 Await 식.

' 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

참고 항목

작업

방법: 제네릭 클래스 사용(Visual Basic)

프로시저 문제 해결(Visual Basic)

참조

Sub 문(Visual Basic)

매개 변수 목록(Visual Basic)

Dim 문(Visual Basic)

Call 문(Visual Basic)

Of 절(Visual Basic)

함수 식(Visual Basic)

개념

Function 프로시저(Visual Basic)

매개 변수 배열(Visual Basic)

람다 식(Visual Basic)