C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
Re[5]: RoutedEventArgs.Empty
(過去ログ 111 を表示中)
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
トピック表示
ランキング
記事検索
過去ログ
[トピック内 6 記事 (1 - 6 表示)] <<
0
>>
■65645
/ inTopicNo.1)
RoutedEventArgs.Emptyについて
▼
■
□投稿者/ らぐんす
(12回)-(2013/03/13(Wed) 10:50:11)
分類:[.NET 全般]
いつもお世話になっております。
Windowsフォームコントロールで独自のイベントを実装するとき、私はしばしば以下のように記述しております。
public event EventHandler Foo;
protected virtual void RaiseFoo() {
if (Foo!=null) {
Foo(this, EventArgs.Empty);
}
}
Silverlightコントロールで同様のことを
protected virtual void RaiseBar() {
if (Bar != null) {
//Bar(this, RoutedEventArgs.Empty);//←コンパイルエラーが表れる
Bar(this, null);//←仕方がないのでこのように書いているが気持ち悪い }
}
を記述するとRoutedEventArgs.Emptyにコンパイルエラーが表れます。
恥ずかしながらこの理由が分かりません。
ご教授お願いいただけないでしょうか?
引用返信
編集キー/
編集
■65646
/ inTopicNo.2)
Re[1]: RoutedEventArgs.Emptyについて
▲
▼
■
□投稿者/ らぐんす
(13回)-(2013/03/13(Wed) 10:53:34)
連続ですみません。一部ソースが抜けておりました。
public event RoutedEventHandler Bar;
protected virtual void RaiseBar() {...
よろしくお願い致します
引用返信
編集キー/
編集
■65649
/ inTopicNo.3)
Re[2]: RoutedEventArgs.Emptyについて
▲
▼
■
□投稿者/ shu
(221回)-(2013/03/13(Wed) 11:31:06)
■
No65646
(らぐんす さん) に返信
RoutedEventArgsにはstaticのEmptyが定義されていないから。
同じように書くならEventArgs.Emptyになります。
引用返信
編集キー/
編集
■65668
/ inTopicNo.4)
Re[3]: RoutedEventArgs.Emptyについて
▲
▼
■
□投稿者/ らぐんす
(14回)-(2013/03/13(Wed) 18:22:55)
shu様、ありがとうございます
Bar(this, EventArgs.Empty);と書いてもエラーになります。
RoutedEventArgsは、EventArgsを継承しているため、
当然使えると思ったのですが…
staticが付くと何か制限があるのでしょうか?
引用返信
編集キー/
編集
■65671
/ inTopicNo.5)
Re[4]: RoutedEventArgs.Empty
▲
▼
■
□投稿者/ Azulean
(114回)-(2013/03/13(Wed) 22:58:21)
2013/03/13(Wed) 23:01:14 編集(投稿者)
■
No65668
(らぐんす さん) に返信
> Bar(this, EventArgs.Empty);と書いてもエラーになります。
> RoutedEventArgsは、EventArgsを継承しているため、
> 当然使えると思ったのですが…
なぜでしょうか。
EventArgs 型の引数に RoutedEventArgs 型のオブジェクトが渡せるのは当然ですが、その逆、RoutedEventArgs 型の引数に EventArgs 型のオブジェクトが渡せないのも当然です。
従って、「当然使える」という結びつけは、継承関係を誤解されているのではないかと思われます。
(static 要素は継承されません。仮に継承されたとしても、EventArgs 型になるので RoutedEventArgs 型の引数には渡せません)
Empty がないのなら、毎回 new RoutedEventArgs() で作って渡すなり、一度作ってフィールド変数あたりにキャッシュしておくなり、どうとでもできると思いますが…。
引用返信
編集キー/
編集
■65683
/ inTopicNo.6)
Re[5]: RoutedEventArgs.Empty
▲
▼
■
□投稿者/ らぐんす
(15回)-(2013/03/14(Thu) 10:34:48)
Azulean様、
>RoutedEventArgs 型の引数に EventArgs 型のオブジェクトが渡せない
>static 要素は継承されません。仮に・・・
なる程EventArgs.EmptyはEventArgs型の静的な定数のようなものであるから、
public delegate void RoutedEventHandler(object sender, RoutedEventArgs e);
の第2引数にRoutedEventArgs.Emptyを渡せないのは当然という、解釈でよろしいでしょうか?
昨晩はピンと来なかったのですが、なぜか今朝は合点が行きました。
>毎回 new RoutedEventArgs() で作って渡すなり・・・
newはコストがかかるというイメージが本で植えつけられているため貧乏性のわたしは、すぐnullでいいかな?思ってしまうのですが、
>一度作ってフィールド変数あたりにキャッシュしておくなり・・・
この発想はありませんでした。これから多用したいと思います。
これにて解決とさせて頂きます。
Azulean様、shu様、この度はありがとうございました。
解決済み
引用返信
編集キー/
編集
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
過去ログには書き込み不可
管理者用
-
Child Tree
-