私はいくつかの古いVBコードを通過し、これらのような関数定義に遭遇します-
Private Function ExistingCustomer(Index As Integer, Customer As String) As Integer
Private Sub cmdCustomerList_Click()
違いは何ですか?
関数は値を返しますが、Subは返しません。とても簡単です。
関数を式で使用することもできます。サブルーチンはできません。関数は、サブルーチンよりもコードを読みやすくするのに役立ちます。
関数が読みやすさを向上させる方法の例を次に示します。
If AccountIsLocked("JJones") then Msgbox("This account is locked")
この関数はどこかで定義されます
public function AccountIsLocked(UserId as string) as boolean
dim usr = uow.AccountRepository.UserInfo(UserId)
return usr.locked
end function
これは同じ例ですが、サブルーチンでコーディングされています。
CheckIfAccountLocked("JJones")
そして、他の場所でこのサブが定義されています:
public sub CheckIfAccountLocked(UserId)
if uow.AccountRepository.UserInfo(UserId).locked then
msgbox("Account is locked")
end if
end sub
また、値のチェックはアクションから分離されていることに注意してください-これは職務の分離に貢献します。この機能は再利用に役立ちます。
VB6では、括弧を管理するいくつかの奇妙なルールがあります。サブルーチンにパラメーターがない場合、括弧は必要ありません(Visual Studioが括弧を削除する可能性があると思います)。これを回避する1つの方法は、サブの前にキーワード「Call」を追加することです。
Call CheckIfAccountLocked()
対
CheckIfAccountLocked
関数では、ブール値、文字列、その他のデータデータ型として値を返すことができます。
しかし、subは何も返しません。与えられたコードと命令を実行するだけです。これらもメソッドと見なされます
Subはコントロールのイベントでも使用され、これらのイベントも値を返しません。
たとえば、コマンドボタンのクリックイベント:Private sub cmd_click()
終了サブ
どちらもコードを記述するセクションですが、関数は値を返す必要があります。たとえば、複雑な数学手続きを何度も実行する必要があるプログラムがある場合、単純に関数を作成し、そこに複雑な数学コードを入れて、計算を行う必要があるときはいつでも関数を呼び出すことができます。これが私がそれをうまく説明したかどうか確信が持てないことを願っています。
VB6のSubとFunctionの違いは何ですか?
"sub"は何らかのアクションを実行できます。 「sub」は値を返しません。
例:
Form_Load()
「function」も何らかのアクションを実行できますが、呼び出し元のポイントに値を返します。つまり、「関数は値を返します。多くの場合、変数に基づいています」
例:
Val()、FormatPercentage()。
vBの関数
vBのサブ
構文:private sub sub_name(argument/s(optional))
終了サブ