- PR -

C#でのイベント処理について

1
投稿者投稿内容
ゆみゆみ
会議室デビュー日: 2003/05/08
投稿数: 3
投稿日時: 2003-05-22 17:15
こんにちは。

【@IT連載 改訂版C#入門 第17章 言語に内蔵されたイベント機能】の中で出てきている【17-2複数ハンドラを扱うイベント】について、わからないことがあるので教えてください。

提示されているソースコードでは、イベントハンドラの実装が行われているClass2が、Class1の中に定義されています。このClass2は、Class1の中でも、Class1の中でなくても動作すると思いますが、この実装の違いは何に影響するのでしょうか。

初めての投稿なのですがよろしくお願いします。
Dr. K
常連さん
会議室デビュー日: 2003/04/26
投稿数: 25
投稿日時: 2003-05-22 17:42
Dr. K と申します。
引用:

提示されているソースコードでは、イベントハンドラの実装が行われているClass2が、Class1の中に定義されています。このClass2は、Class1の中でも、Class1の中でなくても動作すると思いますが、この実装の違いは何に影響するのでしょうか。



Class1の中に定義しようが外部に定義しようがClass1にとっては何も変わらないです。
なので、もちろんClass1の中でなくても動作します。
ただ、Class1 の外部からだとアクセスできません。アクセスできるようにするためにはClass2 の前にpublic修飾子をつける必要があります。
「影響」という言葉が若干あいまいな気もしますが、とりわけ(Class1にとっては)何も影響しないんではないでしょうか。
ゆみゆみ
会議室デビュー日: 2003/05/08
投稿数: 3
投稿日時: 2003-05-23 14:46
返答ありがとうございます。

オブジェクト指向をきちんと理解できていないために、このような疑問が出てくるのかなと自分では思っているのですが、Class2は、何故、Class1の中に実装されているのか、その意味を知りたかったのです。
ハンドラの実装を行っているClass2を中で定義するのは、もしかするとイベントの処理をする場合にはあたりまえのことと言うか、そのように定義する慣習などがあるのかとも考えました。
影響と言うのも、具体的に何がどう変わるのか自分できちんと把握できていなかったため、そのような表現になってしまったのですが、Dr.Kさんのおっしゃるように、Class1にとって、Class2が外にあるのと中にあるのとで、何も影響しないのか、それとも、実装する上で何か大きな違いが出てくるのか、そのあたりがわからなかったのです。
プログラムが大きくなれば、このようなイベントの実装方法が重要になってくるのでは?とも思いまして、抽象的な質問ながら、投稿させていただきました。

ありがとうございました。
cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2003-05-23 16:31
クラスを別のクラスの中に書くことのメリットは、名前空間を汚さないことだけです。
すなわち、Class2をClass1でしか使わない場合、Class1内に書く方が見通しがよくなります。

ちなみに、Javaでは話は異なります。
1

スキルアップ/キャリアアップ(JOB@IT)