セージ の メモ書き

メモこそ命の恩人だ

C#-基本文法

C# - init 専用セッター

init 専用セッター 初期化の順序 init 専用セッター docs.microsoft.com public 型 プロパティ名 { get; init; } C# 9.0 以降で使用できる。 プロパティの初期化をオブジェクト生成時に制限できる。 get プロパティのみが最も制限が強い。 init 専用セッター…

C# - レコード型

レコード型 継承 値オブジェクト with 式 レコード型 docs.microsoft.com // 形式1(位置指定構文) public record レコード名(型 プロパティ1, 型 プロパティ2, ...); // 形式2(位置指定構文+追加定義) public record レコード名(型 プロパティ1, 型 プ…

C# - is 演算子

型判定 キャスト パターンマッチング 論理パターン(and/or/not) プロパティパターン リストパターン docs.microsoft.com 型判定 型が一致する場合、true を返す。 基底クラスの場合、true と判定される。 アップキャストできるか判定できる。 インスタン…

C# - switch 式

switch 式 { } 判定 比較演算判定 プロパティ判定 プロパティ判定+比較演算(when) タイプ判定 switch 式 docs.microsoft.com x switch { ... }; C# 8.0 以降で使用できる。 switch 文よりも簡潔に書ける。case・break 不要。 判定機能も従来よりかなり充…

C# - 最上位レベルステートメント

最上位レベルステートメント args 引数 await キーワード フレームワークごとのエントリーポイント コンソール ASP.NET Core MVC WPF Form 最上位レベルステートメント docs.microsoft.com C# 9.0 以降で使用できる。 main メソッドから外側の記述を省略でき…

C# - 浮動小数点型(float/double/decimal)

浮動小数点 (floating point number) 循環小数による誤差 指数表記(E 表記) 浮動小数点型(float/double/decimal) float double decimal 注意 小数の一致判定 実験 キャストの処理時間 浮動小数点 (floating point number) 表現方式 小数点の位置 利点 …

C# - エンディアン/BitConverter クラス

エンディアン BitConverter.IsLittleEndian フィールド BitConverter クラス プリミティブ型 → バイト配列 バイト配列 → int エンディアン Endian : "ガリヴァー旅行記の小人国" が語源。 "バイトオーダー" とも呼ぶ。 複数バイトのデータを扱う際のデータの…

C# - 整数型(byte/short/int/long/nint)

整数 (Integer) 整数型(byte/short/int/long/nint) nint 実験 処理速度 整数 (Integer) 整数とは、以下の総称である。 正数(1, 2, 3, ...)、"自然数" とも呼ぶ。 0 負数(-1, -2, -3, ...) "整" は、半端な数値でないことを意味する。 きりの良い数…

C# - コンストラクタ/ファイナライザ(デストラクタ)

コンストラクタ 生焼けオブジェクト (未初期化状態) コンストラクタの継承 同一クラスの場合 基底クラスの場合 静的コンストラクタ ファイナライザ(デストラクタ) GC.Collect メソッド コンストラクタ コンストラクター - C# プログラミング ガイド | Micr…

C# - 等値演算子/Equalsメソッド

はじめに 等値と等価の違い タイプセーフ (型安全) 等値演算子とEqualsメソッドの特徴 値型の場合 構造体以外の場合(int など) 構造体の場合 参照型の場合 string の場合(イミュータブル) string 以外の場合(ミュータブル) 実験:比較速度 string の場…

C# - 構造体

構造体 クラス or 構造体の使い分け readonly struct 実験 値コピー時に別アドレスになることを確認 クラスとの生成速度の違いを確認 構造体 docs.microsoft.com クラスとの共通点 プロパティやメソッドをまとめたデータ型を定義できる。 インターフェースを…

C# - 短絡評価

短絡評価 混在パターン 活用例 NULL チェック 短絡評価 短絡評価 - Wikipedia ブール論理演算子 - C# リファレンス | Microsoft Docs 演算子 名称 短絡評価 x || y 条件付き論理 OR 演算子 あり x && y 条件付き論理 AND 演算子 あり x | y 論理 OR 演…

C# - using ステートメント/using ディレクティブ/using エイリアスディレクティブ/using static ディレクティブ

using キーワード using ステートメント using ディレクティブ using エイリアス ディレクティブ using static ディレクティブ using ディレクティブの自動挿入 ( VisualStudio 機能 ) using キーワード using キーワード - C# リファレンス | Microsoft Doc…

C# - 改行コード/Environment.NewLine

改行コード Environment.NewLine プロパティ 改行コード 改行コード - Wikipedia 改行コードは以下の2種類。 キャリッジリターン ( CR : Carriage Return ) ラインフィード ( LF : Line Feed ) システムにより片方または両方が使用される。 OS 改行コード Wi…

C# - コマンドライン引数

コマンドライン引数 Environment.CommandLine プロパティ Environment.GetCommandLineArgsメソッド コマンドライン引数 Main() とコマンド ライン引数 | Microsoft Docs コマンド ライン引数を表示する方法 | Microsoft Docs プログラムを起動する際に指定す…

C# - ジェネリック

ジェネリック ( generic:総称、無印 ) ジェネリックメソッド ジェネリッククラス 型パラメーター 型名の取得 ジェネリック ( generic:総称、無印 ) ジェネリック クラスとメソッド | Microsoft Docs インスタンス生成時に型を決定する機能。 処理は同じで…

C# - enum (列挙型)

enum キーワード キャスト ( enum ⇔ string ) enum → string string → enum キャスト ( enum ⇔ int ) enum → int int → enum 列挙子の一覧表示 GetValues メソッド GetNames メソッド Flags 属性 ( FlagsAttribute クラス ) フラグ追加 フラグ削除 フラグ判…

C# - readonly/const

readonly キーワード const キーワード リテラル ( literal:直定数 ) const バージョン管理問題 解決策 readonly キーワード readonly キーワード - C# リファレンス | Microsoft Docs 読取専用の "変数" を定義できる。 以下に該当する場合は使用する。 宣…

C# - 継承

継承 多重継承 オーバーライド 基底クラスメンバーへのアクセス コンストラクタ コンストラクタの呼び出し順序 コンストラクタ オーバーロード時の動作 継承のアンチパターン リスコフの置換原則 継承の基準 継承 元のクラスの性質を引き継いだ新しいクラス…

C# - null許容型/null条件演算子/null合体演算子

null条件演算子は、[ ?. ] の前が null である場合は null を返す。null でない場合は 後続の処理結果を返す。null合体演算子は、[ ?? ] の前が null でない場合は 左辺 を返す。null である場合は 右辺 を返す。

C# - 自動実装プロパティ

private フィールド を省略できるプロパティである。( 従来の記述では、 プロパティに対応する private フィールドを用意する必要があった。) get / set アクセサの記述も従来より省略できる。

C# - 汎用デリゲート

汎用デリゲート Action デリゲート Func デリゲート Predicate デリゲート Invoke メソッド 汎用デリゲート 汎用的に使用できるデリゲートである。 デリゲートの名称は、[ Action ] [ Func ] [ Predicate ] 等が用意されている。 デリゲートの引数・戻り値の…

C# - dynamic キーワード

dynamic 使い方1:ExpandoObject 使い方2:匿名オブジェクト dynamic 動的型付け変数を定義できる。 変数を生成した時点では、クラスのメンバーは決まっていない。動的に定義することができる。 C# 4.0 以降で使用できる。 使い方1:ExpandoObject ExpandoOb…