23380


VBで特定の関数名を作成しようとするとVisual Studioがエラーも出ずに終了してしまいます。

具体的には、Visual Studio
2015上のVBでフォームアプリケーションを作成し、ボタン(Button1)を配置します。次にソースコードで以下のような関数を作成しようとすると
set_Button1 まで入力したところでVisual Studioが終了してしまいます。

[code]

    Private Sub set_Button1()
    
    End Sub
    
[/code]

調べた限りでは set_ のほかに get_ でも落ちることからプロパティが関係しているのかとも思いますがよく分かりません。

この問題は関数名を入力するときに気をつけるしかないのでしょうか？  
あるいはなんらかの設定をすることでエラーを出すなどの対策が可能なのでしょうか？  
よろしくお願いします。


CC BY-SA 3.0
2016-03-23T08:26:49.930
23379
2016-03-23T09:13:37.140
14903
question
visual-studio vb.net
VB.NET で特定の関数名を作成しようとするとVisual Studio が落ちる


Visual Studioの不具合だと思われるので、[Microsoft
Connect](https://connect.microsoft.com/VisualStudio/Feedback)かWindowsフィードバックに報告のうえ、修正されるまでは自分で回避するしかないと思います。

* * *

原因を説明するとフォーム上に`Button1`を配置すると、`.designer.vb`に以下のようなコードが生成されます。

[code]

    Friend WithEvents Button1 As System.Windows.Forms.Button
    
[/code]

この`WithEvents`フィールドはVB文法上はフィールド扱いですが、値の代入時にイベントハンドラーの設定が行われるため、内部的にはプロパティとなります。この`Button1`プロパティに対して生成される予約メソッド`set_Button1`の存在を想定していないため、エディターが異常終了しているのだと思われます。

確認したところ、この問題は`WithEvents`に限らずプロパティ一般で発生するようです。

[code]

    Class Hoge
    
        Property Fuga As String
    
        Sub set_Fuga()
        End Sub
    
    End Sub
    
[/code]

もともと.NETではメソッド名にアンダーバーを使うことがあまり推奨されていないので、`SetButton1`等で代替するのが良いのではないでしょうか。


CC BY-SA 3.0
2016-03-23T08:58:01.237
23380
2016-03-23T09:13:37.140
2016-03-23T09:13:37.140
5750
5750
23379
answer