C#

  1. O(n) 配列の循環回転アルゴリズム

    私がプログラミングを勉強する過程で、演習として解決すべき単純だが興味深い問題がありました。これらの問題の 1 つは、配列 (または別のコレクション) を特定の値だけローテーションすることでした。ここで、それを行うための簡単な公式を紹介します。 # 指定されたシフトで配列を回転させるジェネリック メソッドの例 シフト値が負の場合は左に回転し、値が正の場合は右に回転することを指摘したいと思います。 public static void Main() { int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

  2. 正規表現解析

    # シングルマッチ using System.Text.RegularExpressions; string pattern = ":(.*?):"; string lookup = "--:text in here:--"; // Instanciate your regex object and pass a pattern to it Regex rgxLookup = new Regex(pattern, RegexOptions.Singleline, TimeSpan.FromSeconds(1)); // Get the match

  3. オペレーター名

    nameof 演算子を使用すると、変数の名前を取得できます 、タイプ またはメンバー リテラルとしてハードコーディングせずに文字列形式で。 操作はコンパイル時に評価されます。つまり、IDE の名前変更機能を使用して、参照された識別子の名前を変更すると、名前文字列が更新されます。 # PropertyChanged イベントの発生 スニペット public class Person : INotifyPropertyChanged { private string _address; public event PropertyChangedEventHandler Pro

  4. Null 条件演算子

    # Null 条件演算子 ?. 演算子は、冗長な null チェックを回避するための構文糖衣です。安全なナビゲーション演算子とも呼ばれます。 次の例で使用されるクラス: public class Person { public int Age { get; set; } public string Name { get; set; } public Person Spouse { get; set; } } オブジェクトが null の可能性がある場合 (参照型を返す関数など)、NullReferenceException の可能性を防ぐために、最初にオブジェ

  5. Null 合体演算子

    # 基本的な使い方 null-coalescing operator (??) の使用 左側のオペランドが null の場合、null 許容型のデフォルト値を指定できます . string testString = null; Console.WriteLine("The specified string is - " + (testString ?? "not provided")); .NET Fiddle のライブ デモ これは論理的に次と同等です: string testString = null; if (testString ==

  6. Equals と GetHashCode

    # 適切な GetHashCode オーバーライドの記述 GetHashCode Dictionary<> と HashTable のパフォーマンスに大きな影響があります。 良い GetHashCode メソッド 均等な分布を持つ必要があります-すべての整数は、ランダムなインスタンスに対してほぼ等しい確率で返される必要があります-メソッドが各インスタンスに対して同じ整数(定数「999」など)を返す場合、悪いパフォーマンス これらは、遅さが特徴である暗号化ハッシュではありません ハッシュ関数が遅いほど、辞書も遅くなります そうでない場合 (例:GetHashCode は乱数を

  7. 等値演算子

    # C# の等値の種類と等値演算子 C# には、参照の等価性と値の等価性の 2 種類の等価性があります。値の等価性は、一般的に理解されている等価性の意味です。つまり、2 つのオブジェクトに同じ値が含まれていることを意味します。たとえば、値が 2 の 2 つの整数の値は同じです。参照の等価性は、比較する 2 つのオブジェクトがないことを意味します。代わりに、2 つのオブジェクト参照があり、どちらも同じオブジェクトを参照しています。 object a = new object(); object b = a; System.Object.ReferenceEquals(a, b); //ret

  8. 条件文

    # If-Else ステートメント 一般的なプログラミングでは、多くの場合 decision が必要です または branch コード内で、さまざまな入力または条件の下でコードがどのように動作するかを説明します。 C# プログラミング言語 (およびこの件に関するほとんどのプログラミング言語) 内で、プログラム内にブランチを作成する最も簡単で、時には最も便利な方法は、If-Else を使用することです。 100 までのスコアを表す int パラメーターを受け取るメソッド (別名関数) があり、メソッドが合格か不合格かを示すメッセージを出力するとします。 static void PrintP

  9. オペレーター

    C# では、演算子は、式またはステートメント内の 1 つ以上のオペランドに適用されるプログラム要素です。インクリメント演算子 (++) や new など、1 つのオペランドを取る演算子は、単項演算子と呼ばれます。算術演算子 (+、-、​​、/) など、2 つのオペランドを取る演算子は、二項演算子と呼ばれます。 1 つの演算子、条件演算子 (?😃) は 3 つのオペランドを取り、C# で唯一の三項演算子です。 # オーバーロード可能な演算子 C# では、operator を使用して静的メンバー関数を定義することにより、ユーザー定義型で演算子をオーバーロードできます。 キーワード。 次の例は

  10. リテラル

    # 個の uint リテラル uint リテラルはサフィックス U を使用して定義されます または u 、または uint の範囲内の整数値を使用して : uint ui = 5U; # 個の int リテラル int リテラルは、int の範囲内の整数値を使用するだけで定義されます : int i = 5; # sbyte リテラル sbyte type にはリテラル接尾辞がありません。整数リテラルは int から暗黙的に変換されます : sbyte sb = 127; # 個の 10 進リテラル decimal リテラルは、実数に接尾辞 M または m を使用して定義さ

  11. C# 言語の概要

    # 新しいコンソール アプリケーションの作成 (Visual Studio) Visual Studio を開く ツールバーで、[ファイル] に移動します → 新しいプロジェクト コンソール アプリケーションを選択します プロジェクトの種類 ファイル Program.cs を開く ソリューション エクスプローラーで 次のコードを Main() に追加します : public class Program { public static void Main() { // Prints a message to the console. Syst

  12. C# – プロパティがリフレクションを持つ列挙型かどうかを確認する

    リフレクションを使用して型のプロパティを確認する場合、PropertyInfo.PropertyType.IsEnum を使用して、プロパティが列挙型かどうかを確認できます。これは、リフレクトされた型で Enum API メソッド (Enum.Parse() など) を安全に呼び出せるようにして、例外を防止する場合に役立ちます - ArgumentException:提供される型は Enum でなければなりません . プロパティが列挙型かどうかを確認し、列挙型 API メソッドを使用する例を次に示します: var prop = typeof(Coder).GetProperty("L

  13. WinForms – 列挙型の説明を含む ComboBox

    デフォルトでは、列挙値を ComboBox にロードすると、列挙名が表示されます。代わりに ([説明] 属性から) 列挙型の説明を表示し、選択した列挙型の値を取得できるようにする場合は、次のようにします。 列挙値と説明のペアを含むオブジェクトのリストを生成します。 ComboBox.DataSource をこのリストに設定します。 ComboBox.DisplayMember を説明に設定し、ComboBox.ValueMember を列挙値に設定します。 必要に応じて、オブジェクトの列挙型プロパティを ComboBox.SelectedValue (SelectedItem ではありません

  14. WinForms – フォームのコントロールをループします

    フォームにはコントロールのコレクションもあります (コントロール プロパティ) をループすることができます。これは、複数のコントロールに対して何かを行いたいが、個々のコントロールを処理するために手動でコードを入力する必要がない場合に便利です。 以下は、フォームのトップレベル コントロールをループする例です: foreach(Control control in this.Controls) { control.Visible = true; } Code language: C# (cs) 注:foreach では、ループ変数に「var」ではなく「Control」を使用してください。

  15. C# – 辞書をループする

    ディクショナリをループするときは、foreach または Linq メソッドを使用するかどうかに関係なく、Key プロパティと Value プロパティ (ディクショナリと同じ型) を持つ KeyValuePair オブジェクトを処理します。 foreach を使用して辞書をループする方法の例を次に示します。 var wordCountMap = new Dictionary<string, int>() { ["cat"] = 1, ["dog"] = 3, ["fish"] = 10 }; foreac

  16. C# – 現在の日付と時刻を取得する

    以下は、現在の日付/時刻を取得する方法の例です: var now = DateTime.Now; Console.WriteLine($"Current local time: {now}"); Code language: C# (cs) これは、現在のローカル日付/時刻を出力します: Current local time: 6/21/2022 3:45:42 PMCode language: plaintext (plaintext) 注:デフォルトでは、(OS からの) 現在のカルチャの形式が使用されます。これは、米国の日付形式 – MM/dd/yyyy を示していま

  17. C# – 辞書の最大値でキーを取得する

    ディクショナリ内の最大値でキーを取得する最も簡単な方法は、Linq MaxBy() メソッド (.NET 6 で追加) を使用することです。これは、最大値を持つキー/値のペアを返します。以下に例を示します: using System.Linq; var animalCountMap = new Dictionary<string, int>() { ["fish"] = 100, ["dog"] = 3, ["cat"] = 10, ["bird"] = 50 }; var maxK

  18. C# – TimeZoneInfo の使用方法

    タイム ゾーンは複雑であり、その規則は変更される可能性があるため、それらを処理するときにライブラリを使用することは理にかなっています。 .NET の 1 つのオプションは、組み込みの TimeZoneInfo クラスを使用することです。 TimeZoneInfo を使用してローカル システムのタイム ゾーンを取得する例を次に示します。 var localTimeZone = TimeZoneInfo.Local; Console.WriteLine($"Time zone display name: {localTimeZone.DisplayName}"); //same

  19. C# – 現在の日付の UTC オフセットを使用してタイム ゾーンの表示名を取得する

    タイム ゾーンの UTC オフセットは、夏時間のため、時期に基づいて変化する可能性があります。 TimeZoneInfo クラスの問題の 1 つは、現在の日付が夏時間の場合でも、TimeZoneInfo.DisplayName が常に基本 UTC オフセットを表示することです。これはユーザーを混乱させる可能性があります (これは Windows が表示するものと同じです! ). 問題の例を次に示します: Console.WriteLine($"Current local date/time: {DateTimeOffset.Now}"); Console.WriteLine(

  20. C# – foreach ループで辞書の値を変更する

    .NET 5 以降では、foreach ループでディクショナリの値を直接変更できます。以下に例を示します: var wordCountMap = new Dictionary<string, int>() { ["apple"] = 1, ["cat"] = 5, ["dog"] = 10 }; foreach (var word in wordCountMap) { wordCountMap[word.Key]++; Console.WriteLine($"{word.Key}={wordCountMap[wo

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