人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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("サンプルイベント実行");
}
}

●質問者: disca
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:base C# Class Console Delegate
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● noname
●60ポイント

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&...

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ