C#でカスタムイベントを定義して使用する方法
C# プログラムでカスタム イベントを定義して使用する方法: 最初にクラスでイベントを定義し、次にイベントのパラメーターを定義し、次に TestClass でイベントをトリガーし、最後にイベントを使用します。
C#プログラム内でカスタム イベントを定義して使用する手順は次のとおりです。まずクラス内でイベントを定義し、次にクラス内でイベントのパラメータを定義します。 TestClass イベントをトリガーし、最後にイベントを使用します。
[推奨コース: C# チュートリアル ]
C# プログラム内でカスタム イベントを定義して使用すると、次のことが可能になります。次のいくつかのステップに分かれます:
ステップ 1: クラスでイベントを定義します
using System; public class TestClass { //.... public event EventHandler TestEvent }
ステップ 2: イベント パラメーターを定義します
注 : イベント パラメーター クラス TestEventArgs は System.EventArgs から継承します
using System; public class TestEventArgs : EventArgs { public TestEventArgs() : base() { } public string Message { get; set; } }
ステップ 3: TestClass でイベントを発生させる
public class TestClass { // 这个方法引发事件 public void RaiseTestEvent(string message) { if (TestEvent == null) return; TestEvent(this, new TestEventArgs { Message = message }); } public event EventHandler TestEvent; }
ステップ 4: 使用しますイベント
class Program { static void Main(string[] args) { TestClass tc = new TestClass(); // 挂接事件处理方法 tc.TestEvent += Tc_TestEvent; Console.WriteLine("按任意键引发事件"); Console.ReadKey(); // 引发事件 tc.RaiseTestEvent("通过事件参数传递的字符串"); Console.WriteLine("按任意键退出"); Console.ReadKey(); } private static void Tc_TestEvent(object sender, EventArgs e) { // 将事件参数强制转换为TestEventArgs TestEventArgs te = (TestEventArgs)e; // 显示事件参数中的Message Console.WriteLine(te.Message); } }
#完全なプログラムは次のとおりです##
using System; public class TestClass { public void RaiseTestEvent(string message) { if (TestEvent == null) return; TestEvent(this, new TestEventArgs { Message = message }); } public event EventHandler TestEvent; } public class TestEventArgs : EventArgs { public TestEventArgs() : base() { } public string Message { get; set; } } class Program { static void Main(string[] args) { TestClass tc = new TestClass(); tc.TestEvent += Tc_TestEvent; Console.WriteLine("按任意键引发事件"); Console.ReadKey(); tc.RaiseTestEvent("通过事件参数传递的字符串"); Console.WriteLine("按任意键退出"); Console.ReadKey(); } private static void Tc_TestEvent(object sender, EventArgs e) { TestEventArgs te = (TestEventArgs)e; Console.WriteLine(te.Message); } }
要約: 上記がこの記事の全内容です。みんなに役立つ。
以上がC#でカスタムイベントを定義して使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

C#で不変のオブジェクトとデータ構造を設計するコアは、作成後にオブジェクトの状態が変更されず、それによりスレッドの安全性を改善し、状態の変化によって引き起こされるバグを減らすことです。 1. readonlyフィールドを使用し、コンストラクターの初期化と協力して、人クラスに示されているように、建設中にフィールドが割り当てられるようにします。 2。コレクションタイプをカプセル化し、内部コレクションの外部修正を防ぐために、ReadOnlyCollectionやImmutableListなどの不変のコレクションインターフェイスを使用します。 3.レコードを使用して、不変モデルの定義を簡素化し、データモデリングに適した読み取り専用属性とコンストラクターをデフォルトで生成します。 4.不変の収集操作を作成するときに、System.collections.immを使用することをお勧めします。

C#コードをよく書くための鍵は、メンテナンス性とテスト可能性です。合理的に責任を分割し、単一の責任原則(SRP)に従って、それぞれリポジトリ、サービス、およびコントローラーによるデータアクセス、ビジネスロジック、および要求処理を行い、構造の明確さとテスト効率を改善します。多目的インターフェースと依存関係注入(DI)は、交換の実装、機能の拡張、シミュレーションテストを促進します。単体テストは、外部依存関係を分離し、模擬ツールを使用してロジックを検証して、高速で安定した実行を確保する必要があります。読みやすさとメンテナンスの効率を改善するために、命名と小さな機能の分割を標準化します。明確な構造、明確な責任、テストに優しい原則を順守することで、開発効率とコードの品質を大幅に向上させることができます。

一般的な制約は、タイプパラメーターを制限して特定の動作または相続関係を確保するために使用されますが、共変動によりサブタイプの変換が可能になります。たとえば、Wheret:icomparableは、tが同等であることを保証します。 IENumerableなどの共変動により、IENumerableをiEnumerableに変換することができますが、読み取りのみで変更できません。一般的な制約には、クラス、struct、new()、ベースクラス、インターフェイスが含まれ、複数の制約はコンマによって分離されます。共変動にはOUTキーワードが必要であり、インバーターとは異なるインターフェイスとデリゲートにのみ適用できます(キーワード内)。共分散はクラスをサポートせず、自由に変換することはできず、制約は柔軟性に影響することに注意してください。

asp.netcoreでカスタムミドルウェアを作成します。これは、クラスを作成して登録することで実装できます。 1.InvokeAsyncメソッドを含むクラスを作成し、httpcontextとrequestdelegatenextを処理します。 2。Program.csにusemiddlewareに登録します。ミドルウェアは、ロギング、パフォーマンス監視、例外処理などの一般的な操作に適しています。MVCフィルターとは異なり、アプリケーション全体に作用し、コントローラーに依存しません。ミドルウェアの合理的な使用は、構造的な柔軟性を向上させることができますが、パフォーマンスに影響を及ぼさないようにする必要があります。

C#プロジェクトで依存関係注入を使用する正しい方法は次のとおりです。1。DIのコアアイデアは、自分でオブジェクトを作成するのではなく、コンストラクターを介して依存関係を受け取ってゆるい結合を実現することです。 2. ASP.Netcoreでサービスを登録する場合、ライフサイクルを明確にする必要があります。一時的、スコープ、シングルトン、およびビジネスニーズに応じて選択します。 3.コンストラクター噴射を使用することをお勧めします。フレームワークは、コントローラーとサービスに適した依存関係を自動的に解析します。 4.内蔵コンテナは小さなプロジェクトで使用でき、AutoFACなどのサードパーティコンテナを複雑なシナリオで導入でき、カスタムサービスの登録と構成の読み取り値がサポートされます。これらの重要なポイントを習得すると、コードのテスト可能性、保守性、スケーラビリティの向上に役立ちます。

asyncとawaint in c#の一般的な問題には次のものがあります。1。resultまたは.wait()の誤った使用がデッドロックを引き起こします。 2。ConfigureAwait(False)を無視すると、コンテキスト依存関係が発生します。 3。asyncvoidの乱用はコントロールの欠落を引き起こします。 4.シリアル待ち声は、並行性のパフォーマンスに影響します。正しい方法は次のとおりです。1。同期ブロッキングを避けるために、非同期方法は非同期である必要があります。 2。クラスライブラリでのconfigureAwait(false)の使用は、コンテキストから逸脱するために使用されます。 3.イベント処理でのみAsyncvoidを使用します。 4.同時タスクを最初に開始し、その後効率を改善するために待つ必要があります。かなりの閉塞の書き込みを避ける非同期コードのメカニズムを理解し、標準化する。

cachinginc#アプリケーションは、memorycachinginginginginginginginginginginginginginginginging-disfordistributedscenarios、およびProperinvalidations trategies.useimemorycacheforfastlocaching withpithpirationPolicies、redisviastackexchangeng.ridisforshiredorlorlge-scalecaching、

例外とエラー管理を処理するための重要な戦略には次のものがあります。1。トライキャッチブロックを使用して例外をキャッチし、可能なエラーコードを試してみる、キャッチに特定の例外タイプを指定し、空のキャッチブロックを回避します。 2。例外を乱用しないでください。例外を使用して通常のロジックを制御しないようにし、条件付き判断を使用することを優先します。 3.例外情報を記録して渡し、ログライブラリを使用してスタック情報を記録し、再販売時に元の例外を保持します。 4.システムの例外とビジネスエラーを区別するためのカスタム例外を合理的に設計しますが、適度に使用する必要があります。これらの方法は、より堅牢で保守可能なアプリケーションを構築するのに役立ちます。
