C#についての質問です。

base.SampleEvent();を呼ぼうとしています。
下記のような書き方ではできないのでしょうか?。

class Program
{
static void Main(string[] args)
{
Child obj = new Child();
obj.Run();
}
}

class Parent
{
public delegate void SampleDelegate();

public event SampleDelegate SampleEvent;

public void CallEvent()
{
if (SampleEvent != null)
{
SampleEvent();
}
}
}

class Child : Parent
{
public void Run()
{
base.SampleEvent += new SampleDelegate(SampleMethod);

// これをすれば呼べる
base.CallEvent();
// 但しFoo()のようなメソッドは定義されていない為
// 以下のようにしたいがビルドできない
base.SampleEvent();
}

private void SampleMethod()
{
System.Console.WriteLine("サンプルイベント実行");
}
}

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/08/15 13:19:01
  • 終了:2007/08/22 13:20:03

回答(1件)

id:takabow No.1

noname回答回数51ベストアンサー獲得回数142007/08/15 14:08:22

ポイント60pt

eventはそれを定義したクラス以外からは呼び出すことができません。

SampleEventをイベントとして扱うことにこだわらなければ、単にデリゲートとして扱い、

 

public event SampleDelegate SampleEvent;

          ↓

public SampleDelegate SampleEvent;

 

とすれば外部からでも呼び出すことができ、

base.SampleEvent();

としてもコンパイルできます。

 

この辺については、イベントとデリゲートの違いを調べられると、よくわかるかと思われます。

http://wisdom.sakura.ne.jp/programming/cs/cs56.html

http://www.unisys.co.jp/club/net_view/20030210.html

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=3497&...

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=3497&...

  • id:disca
    ご回答ありがとうございます(^^!。
    URLのサイトを参考に解決いたしました

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません