【VB】C#との差異 (関数編)

■ 関数(プロシージャー)

* メソッドを、「プロシージャー」と呼ぶ。

【1】戻り値なしの関数

* 「サブプロシージャ」と呼ぶ。
Private Sub 【メソッド名】(【引数】)
  ' 処理
End Sub

サンプル

Private Sub SayHello(name As String)
    MsgBox "Hello world, " & name & "!"
End Sub

【2】戻り値ありの関数

* 「関数プロシージャ」と呼ぶ。
Private Function 【メソッド名】(【引数】) As 【型】
    Return value
End Function

サンプル

Private Function SayHello(num1 As Integer, num2 As Integer) As Integer
    Return num1 + num2
End Function

参考文献

http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard11.htm

■ 値渡し/参照渡し

【1】ByVal:値渡し

Private Sub Sample(ByVal arg As int)
    
    arg = 100
    
End Sub 

【2】ByRef:参照渡し

Private Sub Sample(ByRef arg As int)
    
    arg = 100
    
End Sub 

■ Static関数

【1】Sharedメソッド

 * クラスとの違いは、Newする必要がない
  + つまり、静的 Shared (C#ではstatic)なクラスみたいなもの

Public Shared Function GetHello()

参考文献

http://www.atmarkit.co.jp/fdotnet/vb6tonet/vb6tonet10/vb6tonet10_02.html

【2】Module

 * VB6.0から引き継いでいる機能で、クラスに近い
 * クラスとの違いは、Newする必要がない
  + つまり、静的 Shared (C#ではstatic)なクラスみたいなもの
 * 拡張メソッドを使用したい場合に使用する(静的 Sharedでは、拡張メソッド使用は使用できない)
* 「拡張メソッド」について、以下の関連記事を参照のこと。
http://blogs.yahoo.co.jp/dk521123/35652078.html

関連記事

VBC#との差異 (拡張メソッド 編)

http://blogs.yahoo.co.jp/dk521123/35652078.html