質問: VBで特定の関数名を作成しようとするとVisual Studioがエラーも出ずに終了してしまいます。 具体的には、Visual Studio 2015上のVBでフォームアプリケーションを作成し、ボタン(Button1)を配置します。次にソースコードで以下のような関数を作成しようとすると set_Button1 まで入力したところでVisual Studioが終了してしまいます。 ``` Private Sub set_Button1() End Sub ``` 調べた限りでは set_ のほかに get_ でも落ちることからプロパティが関係しているのかとも思いますがよく分かりません。 この問題は関数名を入力するときに気をつけるしかないのでしょうか? あるいはなんらかの設定をすることでエラーを出すなどの対策が可能なのでしょうか? よろしくお願いします。
回答: Visual Studioの不具合だと思われるので、Microsoft ConnectかWindowsフィードバックに報告のうえ、修正されるまでは自分で回避するしかないと思います。 原因を説明するとフォーム上に`Button1`を配置すると、`.designer.vb`に以下のようなコードが生成されます。 ``` Friend WithEvents Button1 As System.Windows.Forms.Button ``` この`WithEvents`フィールドはVB文法上はフィールド扱いですが、値の代入時にイベントハンドラーの設定が行われるため、内部的にはプロパティとなります。この`Button1`プロパティに対して生成される予約メソッド`set_Button1`の存在を想定していないため、エディターが異常終了しているのだと思われます。 確認したところ、この問題は`WithEvents`に限らずプロパティ一般で発生するようです。 ``` Class Hoge Property Fuga As String Sub set_Fuga() End Sub End Sub ``` もともと.NETではメソッド名にアンダーバーを使うことがあまり推奨されていないので、`SetButton1`等で代替するのが良いのではないでしょうか。