Sugi@ぱぱんぶぃびぃ Blog

VBとかVB.NETとかVB2005とか・・・

AILight Banner
AILight Blog

プロフィール

Sugi@ぱぱんぶぃびぃ Blog

目次

Blog 利用状況

記事分類

過去の記事

タグ

VB.NET: ByRef パラメータにリテラル値を渡す

VB.NET(というかVB)では、ByRef パラメータに対してリテラル値や定数を渡すことができる。

普通ならばこういう使い方はしないのだか、なんとなく気になったので、調べてみた。

Public Sub Method1(ByRef i1 As Integer)
  ~
End Sub
なんて、メソッドを用意して、
  Me.Method1(1)
と実行コードを記述しビルドすると、IL上は
...(略)...
      .locals (
            int32 num1)
      L_0000: ldc.i4.1 
      L_0001: stloc.0 
      L_0002: ldloca.s num1
      L_0004: call void ConsoleApplication1.Class1::Method1(int32&)
...(略)...

となる。

なんだ、ローカル変数が自動的に作成されるわけね。

ちなみに、メソッドのパラメータをByValにした場合は単純に、

      L_0000: ldc.i4.1 
      L_0001: call void ConsoleApplication1.Class1::Method1(int32)

となる。

投稿日時 : 2005年2月9日 6:27


コメントを追加

#  re: [VB.NET] ByRef パラメータにリテラル値を渡す 2005年2月9日 15:32 河端善博

リテラルを許すところがすばらしい。
でも、プログラマが勘違いしていることもあるような。

#  re: [VB.NET] ByRef パラメータにリテラル値を渡す 2005年2月10日 17:48 菊池

ByRef パラメータに変数 X を渡すのと (X) を渡すのとでプロシジャが書き込んだ値が戻るか戻らないかが違うってのが VB6 ぐらいの時にあったかな。

X は変数 (X) は式なので (X) と書くと同様に一時変数が取られてそれがByRef渡しされたはず。

#  re: [VB.NET] ByRef パラメータにリテラル値を渡す 2005年2月10日 17:53 杉下@ぱぱんぶぃびぃ

しらなかったです。>VB6の話
タイトル
名前
URL
コメント