[解決済み】C#におけるtypedefの等価性
2022-01-21 09:24:49
質問
C#でtypedefに相当するもの、または似たような動作を得る方法はありますか?いくつかググってみましたが、どこも否定的なようです。現在、私は以下のような状況になっています。
class GenericClass<T>
{
public event EventHandler<EventData> MyEvent;
public class EventData : EventArgs { /* snip */ }
// ... snip
}
さて、このイベントのハンドラを実装しようとすると、すぐにたくさんのタイピングが必要になることは、ロケット科学者でなくてもわかるだろう(ひどい駄洒落で申し訳ない)。結局のところ、以下のような感じになります。
GenericClass<int> gcInt = new GenericClass<int>;
gcInt.MyEvent += new EventHandler<GenericClass<int>.EventData>(gcInt_MyEvent);
// ...
private void gcInt_MyEvent(object sender, GenericClass<int>.EventData e)
{
throw new NotImplementedException();
}
ただし、私の場合、単なるint型ではなく、すでに複合型を使っていたのですが。もう少し簡略化できるといいのですが......。
Edit: つまり、EventHandlerを再定義する代わりに型付けすると、同じような動作になる可能性があります。
解決方法は?
typedefに相当するものはありません。一つのファイルの中で 'using' ディレクティブを使用することはできます。
using CustomerList = System.Collections.Generic.List<Customer>;
が、それはそのソースファイルにのみ影響します。CやC++では、私の経験では
typedef
は通常、広くインクルードされる .h ファイル内で使用されるため、1つの
typedef
はプロジェクト全体で使用することができます。C#では、このような機能はありません。
#include
の機能を使用することができます。
using
ディレクティブを別のファイルで使用することができます。
幸いなことに、あなたが挙げた例では が行います。 には、暗黙のメソッドグループ変換という修正があります。イベントサブスクリプションの行を単に変更することができます。
gcInt.MyEvent += gcInt_MyEvent;
:)
関連
-
[解決済み】C#で四捨五入する方法
-
[解決済み】ここで「要求URIに一致するHTTPリソースが見つかりませんでした」となるのはなぜですか?
-
[解決済み] 型付けされた関数ポインタ?
-
[解決済み] C++のtypedefキーワードに対応するJavaの同等品や方法論はあるのでしょうか?
-
[解決済み] Objective-Cのtypedef enumとは何ですか?
-
[解決済み] C++11の'typedef'と'using'の違いは何ですか?
-
[解決済み] C++の'struct'と'typedef struct'の違い?
-
[解決済み] SQL Server の DataTypes に相当する C# の機能
-
[解決済み] なぜC言語では構造体を頻繁にtypedefする必要があるのですか?
-
[解決済み】C++テンプレートのtypedef
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C#で四捨五入する方法
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】C#はJavaのcharAt()と同等?)
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み] [Solved] .NETでスレッドの終了を待つには?