- 題名: C#とVB.NETのイベントについて
- 日時: 2005/04/12 20:26:10
- ID: 10374
- この記事の返信元:
- (なし)
- この記事への返信:
- [10425] Re[1]: C#とVB.NETのイベントについて2005/04/15 7:44:25
- ツリーを表示
■No10374に返信(初心者ですさんの記事) > 要約すると > C#の場合 Form1内の継承されたイベント->Form1_MouseDown呼び出し > VBの場合 Form(親)のイベント->Form1_MouseDown呼び出し > と、なるのですが、この様な認識でいいのでしょうか? 問題ないと思います。ただ、イベント自体がハンドラを呼び出すのではなく、 他の関数メンバのコードがイベントに追加されているハンドラを呼び出します。 > そうすると言語によって、少し違い(処理内容よりも考え方?)がでてきて > しまうと思うのですが、それでいいのでしょうか? 非仮想メンバの実装は継承チェインの中に一つしかないので、基本クラスから 継承した自クラスのメンバと、基本クラスのメンバを区別する意味はありませ ん。同じものです。どのような型を通してアクセスしても、結局は実装を持っ ている唯一のクラスのメンバへアクセスしているともいえます。 要約の内容について少し書くと、this を通したメンバアクセスの方は、必ず しも継承したイベントへのアクセスになるとは限りませんよね。Form1 クラス で MouseDown と同名の別の新しいメンバを宣言していると、新しいメンバへ のアクセスになります。そういう意味では両言語で処理内容が違うこともあり そうです。
分類:[.NET]
はじめまして
現在、C#とVB.NETを勉強し始めた所です。(素人です)
そこで、少し理解ができない部分があり、ご質問させて頂きます。
Visual Studio.Netの、プロジェクト作成で、C#、VB.Net共、Windowsアプリを選んで、フォームのみを作成した状態から、それぞれ、イベントを作成します。(今回は、MouseDownイベント)
C#では、”Windows フォーム デザイナで生成されたコード”に、イベントへの登録が記述され、VB.Netでは、追加されたイベント処理の後ろに、
Handle句で、イベントへの登録が記述されると思います。
C#では、this.MouseDown += ...
VBでは、...handles MyBase.MouseDown
私の認識では、C#の”this”は、自分のインスタンス、VB.Netの
”MyBase”は継承元のクラス(今回はForm?)と思うのですが、C#は自分のMouseDownイベント(継承されているイベント)から、独自実装のForm1_MouseDownを呼んでいて、VB.Netの場合は、継承元のクラス(Form)から独自実装のForm1_MouseDownを呼んでいるのでしょうか?(分りにくくてすみません)
要約すると
C#の場合 Form1内の継承されたイベント->Form1_MouseDown呼び出し
VBの場合 Form(親)のイベント->Form1_MouseDown呼び出し
と、なるのですが、この様な認識でいいのでしょうか?
そうすると言語によって、少し違い(処理内容よりも考え方?)がでてきて
しまうと思うのですが、それでいいのでしょうか?
それとも、私は、トンチンカンな事を言っているのでしょうか?
上記の件、上手く解説ができる方がいたら、是非お願いしたいのですが...
お手数ですが、よろしくお願いします。