C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: C++/CLI のイベントについて


(過去ログ 59 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■33964 / inTopicNo.1)  C++/CLI のイベントについて
  
□投稿者/ 雲 (28回)-(2009/03/14(Sat) 12:53:51)

分類:[C++/CLI] 

こんにちは。

C++/CLI のイベントについて、少し、混乱しています。

簡単なイベントを作成しているのですが、このとき、
イベントに関数を何もインストールしなくても、特に、
エラーが実行時に発生しません。

C# だとイベントに関数をインストールしておかないとエラーが
発生したはずなのに。。。

もしかしたら、C++/CLI は特にインストールをしなくても良い仕様
なのかとか、考えてしまいます。

以下に、サンプルコードを記載しておきます。
ヒントでも良いので、お気づきの点がありましたらよろしくお願いします。

public delegate void FFF();

public ref class AAA{
public:
event FFF ^fff;

AAA(){}
void foo(){ fff(); }

private:

};

public ref class BBB{
public:
BBB(){}
};

int main()
{
AAA aaa;
BBB ^bbb = gcnew BBB();

// ここで、例外が発生すると思ったのに。。。
aaa.foo();
}

引用返信 編集キー/
■33967 / inTopicNo.2)  Re[1]: C++/CLI のイベントについて
□投稿者/ Hongliang (346回)-(2009/03/14(Sat) 14:06:34)
> もしかしたら、C++/CLI は特にインストールをしなくても良い仕様
> なのかとか、考えてしまいます。
その通りです。イベントは VB に合わせた感じですね。カスタムイベントも、add/remove ハンドラに加え raise ハンドラの定義を要求されます。カスタムしないイベントの場合に自動的に生成される raise ハンドラ内で null チェックが行われています。
引用返信 編集キー/
■33970 / inTopicNo.3)  Re[2]: C++/CLI のイベントについて
□投稿者/ 雲 (29回)-(2009/03/14(Sat) 21:08:17)
No33967 (Hongliang さん) に返信
> その通りです。イベントは VB に合わせた感じですね。カスタムイベントも、add/remove ハンドラに加え raise ハンドラの定義を要求されます。
> カスタムしないイベントの場合に自動的に生成される raise ハンドラ内で null チェックが行われています。

え。そうなのですか?ありがとうございます。まさか、C++/CLI と C# で仕様が異なるなんてことがあるとは。。。
びっくりしました。


解決済み
引用返信 編集キー/
■33971 / inTopicNo.4)  Re[3]: C++/CLI のイベントについて
□投稿者/ Hongliang (347回)-(2009/03/14(Sat) 21:26:27)
> まさか、C++/CLI と C# で仕様が異なるなんてことがあるとは。。。
> びっくりしました。

結構ありますよ。
例えばインターフェイスのプライベート実装でも、C# 流の明示的実装ではなく VB 流の別名定義が採用されています。
後発の強みを生かして C#1.0 と VB7 の長所を取り入れているように個人的に感じます。
// まあその後拡張され続けている C# と VB にまるで追いつけていないようには感じますけど。
// というか追いつく気が無いのかな。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -