VB.NETでもMidステートメントで文字列を置き替えたい

はじめに

Mid関数の引数について調べていたらふとこんなものを見つけました。

Mid ステートメント

同じ名前で関数とステートメントの両方があるだなんてVBはなんて素敵な言語なんでしょう。

サンプルコード

使う使わないは置いておいてとりあえず使い方を確認してみましょう。

Dim target = "The quick brown fox jumps over the lazy dog."
Mid(target, 17, 3) = "cat"
Console.WriteLine(target)
The quick brown cat jumps over the lazy dog.

アッハイ

内部

コンパイラ内でどんな命令に置き換えられているのでしょう。

  IL_0000:  nop
  IL_0001:  ldstr      "The quick brown fox jumps over the lazy dog."
  IL_0006:  stloc.0
  IL_0007:  ldloca.s   target
  IL_0009:  ldc.i4.s   17
  IL_000b:  ldc.i4.3
  IL_000c:  ldstr      "cat"
  IL_0011:  call       void [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.StringType::MidStmtStr(string&,
                                                                                                                 int32,
                                                                                                                 int32,
                                                                                                                 string)
  IL_0016:  nop
  IL_0017:  ldloc.0
  IL_0018:  call       void [mscorlib]System.Console::WriteLine(string)
  IL_001d:  nop
  IL_001e:  nop
  IL_001f:  ret

お疲れ様でした。