C#

  1. Decorator デザインパターンの実装

    # 模擬カフェテリア Decorator は、構造設計パターンの 1 つです。オブジェクトの動作を追加、削除、または変更するために使用されます。このドキュメントでは、Decorator DP を適切に使用する方法を説明します。 簡単な例でその考え方を説明しましょう。あなたが今、有名なコーヒー会社のスターボブスにいると想像してみてください。クリームと砂糖、クリームとトッピングなど、お好きなコーヒーを注文できます。しかし、すべての飲み物のベースはコーヒーです - 暗くて苦い飲み物は、あなたが変更することができます.コーヒーマシンをシミュレートする簡単なプログラムを書きましょう. まず、基本ド

  2. 創造的なデザインパターン

    # シングルトン パターン シングルトン パターンは、クラスの作成を 1 つのインスタンスだけに制限するように設計されています。 このパターンは、次のようなものを 1 つだけ持つことが理にかなっているシナリオで使用されます。 他のオブジェクトの相互作用を調整する単一のクラス。マネージャークラス または一意の単一リソースを表す 1 つのクラス。ロギング コンポーネント シングルトン パターンを実装する最も一般的な方法の 1 つは、静的なファクトリ メソッドを使用することです。 CreateInstance() など または GetInstance() (または C# の静的プロパティ、

  3. コード コントラクトとアサーション

    # ロジックをチェックするアサーションは常に true でなければなりません アサーションは、入力パラメーターのテストを実行するためではなく、プログラム フローが正しいことを検証するために使用されます。つまり、特定の時点でコードについて特定の仮定を行うことができるということです。つまり:Debug.Assert で行われたテスト 常に テストされた値が true であると仮定します . Debug.Assert は DEBUG ビルドでのみ実行されます。 RELEASE ビルドから除外されます。コード コントラクトや入力検証メソッドの代わりとしてではなく、単体テストに加えてデバッグ ツール

  4. コード コントラクト

    # 事後条件 public double GetPaymentsTotal(string name) { Contract.Ensures(Contract.Result<double>() >= 0); double total = 0.0; foreach (var payment in this._payments) { if (string.Equals(payment.Name, name)) { total += payment.Amount; } }

  5. キャッシング

    # メモリキャッシュ //Get instance of cache using System.Runtime.Caching; var cache = MemoryCache.Default; //Check if cache contains an item with cache.Contains("CacheKey"); //get item from cache var item = cache.Get("CacheKey"); //get item from cache or add item if not existing objec

  6. C# での SQLite の使用

    # C# で SQLite を使用して単純な CRUD を作成する まず、アプリケーションに SQLite サポートを追加する必要があります。それには 2 つの方法があります お使いのシステムに適した DLL を SQLite ダウンロード ページからダウンロードし、プロジェクトに手動で追加します NuGet を介して SQLite 依存関係を追加 2 番目の方法で行います 最初に NuGet メニューを開きます System.Data.SQLite を検索します 、それを選択して [インストール] をクリックします を使用してパッケージ マネージャー コンソール

  7. IComparable

    # バージョンの並べ替え クラス: public class Version : IComparable<Version> { public int[] Parts { get; } public Version(string value) { if (value == null) throw new ArgumentNullException(); if (!Regex.IsMatch(value, @"^[0-9]+(\.[0-9]+)*$")) t

  8. クローン可能

    # クラスに ICloneable を実装する ICloneable を実装する ひねりのあるクラスで。 public タイプセーフ Clone() を公開する object Clone() を実装します public class Person : ICloneable { // Contents of class public string Name { get; set; } public int Age { get; set; } // Constructor public Person(string name, int age) {

  9. 関数デリゲート

    # パラメータなし この例は、現在の時刻を返すメソッドをカプセル化するデリゲートを作成する方法を示しています static DateTime UTCNow() { return DateTime.UtcNow; } static DateTime LocalNow() { return DateTime.Now; } static void Main(string[] args) { Func<DateTime> method = UTCNow; // method points to the UTCNow method // that

  10. 利回りキーワード

    ステートメントで yield キーワードを使用する場合、それが現れるメソッド、演算子、または get アクセサーが反復子であることを示します。 yield を使用して反復子を定義すると、カスタム コレクション型の IEnumerable および IEnumerator パターンを実装するときに、明示的な追加クラス (列挙の状態を保持するクラス) が不要になります。 # 簡単な使い方 04 キーワードは、19 を返す関数を定義するために使用されます または 27 (およびそれらの派生ジェネリック バリアントと同様に) その値は、呼び出し元が返されたコレクションを反復処理するときに遅延生成されま

  11. ロックステートメント

    # lock ステートメントでの例外のスロー 次のコードはロックを解除します。問題ありません。舞台裏のロックステートメントは try finally として機能します lock(locker) { throw new Exception(); } 詳細については、C# 5.0 仕様を参照してください: lock フォームのステートメント lock (x) ... どこで x 参照型の式です 、正確に同等です bool __lockWasTaken = false; try { System.Threading.Monitor.Enter(x, ref __lo

  12. 可変スレッドセーフにする

    # Parallel.For ループ内の変数へのアクセスを制御する using System; using System.Threading; using System.Threading.Tasks; class Program { static void Main( string[] args ) { object sync = new object(); int sum = 0; Parallel.For( 1, 1000, ( i ) => { lock( sync ) sum = sum

  13. タスク並列ライブラリ

    # Parallel.ForEach Parallel.ForEach ループを使用して、指定された Web サイト URL の配列に ping を実行する例。 static void Main() { string [] urls = { "www.stackoverflow.com", "www.google.net", "www.facebook.com", "www.twitter.com" };

  14. バックグラウンドワーカー

    # BackgroundWorker を使用してタスクを完了します。 次の例は、BackgroundWorker を使用して WinForms ProgressBar を更新する方法を示しています。 backgroundWorker は、UI スレッドをブロックせずにプログレス バーの値を更新するため、バックグラウンドで作業が行われている間、リアクティブ UI が表示されます。 namespace BgWorkerExample { public partial class Form1 : Form { //a new instance of a backgroundWor

  15. Async-Await の同期コンテキスト

    # async/await キーワードの擬似コード 単純な非同期メソッドを考えてみましょう: async Task Foo() { Bar(); await Baz(); Qux(); } 簡単に言うと、このコードは実際には次のことを意味していると言えます: Task Foo() { Bar(); Task t = Baz(); var context = SynchronizationContext.Current; t.ContinueWith(task) => { if (context ==

  16. 非同期待機

    C# では、async と宣言されたメソッド I / Oベースの操作(Webアクセス、ファイルの操作など)を使用している場合、同期プロセス内でブロックされません。このような非同期マーク付きメソッドの結果は、await を使用して待つことができます。 キーワード。 # await オペレーターと async キーワード await 演算子と async キーワードを組み合わせる: **await** が使用される非同期メソッドは、**async** キーワードで変更する必要があります。 その反対は常に真であるとは限りません:メソッドを async としてマークすることができます await

  17. 非同期/待機、バックグラウンドワーカー、タスク、スレッドの例

    # ASP.NET 構成待ち ASP.NET がリクエストを処理するとき、スレッド プールからスレッドが割り当てられ、リクエスト コンテキスト 創造された。リクエスト コンテキストには、静的な HttpContext.Current を通じてアクセスできる現在のリクエストに関する情報が含まれています。 財産。次に、リクエストのリクエスト コンテキストが、リクエストを処理するスレッドに割り当てられます。 特定のリクエスト コンテキストは、一度に 1 つのスレッドでのみアクティブになる場合があります . 実行が await に達したとき 、リクエストを処理するスレッドは、非同期メソッドの実行

  18. ねじ切り

    # データの読み取りと書き込みを同時に回避する スレッドで同時にデータを共有したい場合があります。これが発生した場合、コードを認識し、問題が発生する可能性のある部分をロックすることが重要です。 2 つのスレッドのカウントの簡単な例を以下に示します。 以下は危険な (間違った) コードです: using System.Threading; class MainClass { static int count { get; set; } static void Main() { for (int i = 1; i <= 2; i++

  19. ストップウォッチ

    # IsHighResolution IsHighResolution プロパティは、タイマーが高解像度パフォーマンス カウンターに基づいているか、DateTime クラスに基づいているかを示します。 このフィールドは読み取り専用です。 // Display the timer frequency and resolution. if (Stopwatch.IsHighResolution) { Console.WriteLine("Operations timed using the systems high-resolution performance counter

  20. タイマー

    # マルチスレッド タイマー System.Threading.Timer - 最も単純なマルチスレッド タイマー。 2 つのメソッドと 1 つのコンストラクターが含まれています。 例:タイマーは DataWrite メソッドを呼び出します。このメソッドは、5 秒が経過した後に「マルチスレッド実行...」を書き込み、その後はユーザーが Enter キーを押すまで毎秒書き込みます: using System; using System.Threading; class Program { static void Main() { // First interval = 500

Total 13414 -C プログラミング  FirstPage PreviousPage NextPage LastPage CurrentPage:2/671  20-C プログラミング/Page Goto:1 2 3 4 5 6 7 8