次の項目は別ページに分割しました。
関連ページ:
クラス
公式サイト:
基本的概念
ドキュメント:
C# のクラス/構造体/レコード | Microsoft Learn [公式]
メンバ変数/プロパティ
- メンバ変数:クラスに定義されたインスタンス毎に値の異なる変数/「フィールド」とも呼ばれる
- プロパティ:メンバ変数の読み書きをゲッター/セッターと呼ばれるメソッドでラップしたもの
- ゲッター:ラップしているメンバ変数の値を読み出すメソッド
- セッター:ラップしているメンバ変数に値を書き込むメソッド
ドキュメント:
参考:
プロパティ?フィールド?メンバー? C# のクラス構造のおさらい – Qiita
C# におけるメンバ変数とプロパティの違い | w2ソリューション株式会社
プロパティとフィールド/メンバ変数の決定的な違い! | エンジニアが送る穴倉生活のすゝめ
C# のプロパティを使いこなそう!さまざまな実装方法を紹介 | FEnet インフラ
Using getter / setter for an array – Stack Overflow
getters / setters for the array – Stack Overflow
継承
C# では、派生クラスのインスタンスは基底クラスの変数に代入することが出来ます。
—— 未確認飛行 C
基底クラスの引数ありのコンストラクタを呼び出すには、base
初期化子を使う。
class Derived : Base
{
public Derived(Type1 arg1, Type2 arg2) : base(arg1, arg2)
{
// ...
}
}
Code language: C# (cs)
ドキュメント:
参考:
継承におけるコンストラクタとデストラクタ | WisdomSoft
引数ありの基底クラスのコンストラクタを呼び出す | …Inertia
オーバーライド (override)
ドキュメント:
override キーワードと new キーワードによるバージョン管理 | Microsoft Learn [公式]
override キーワードと new キーワードを使用する場合について | Microsoft Learn [公式]
override 修飾子 | Microsoft Learn [公式]
参考:
virtual
ドキュメント:
virtual | Microsoft Learn [公式]
参考:
virtual / overide の意味がわかる例 – Qiita
virtual と override によるメソッドの上書き | (void*)Pないと
virtual, override, new | やる気がストロング ZERO
多態性/ポリモーフィズム
キーワード
ドキュメント:
ポリモーフィズム | Microsoft Learn [公式]
参考:
ジェネリッククラス
ドキュメント:
ジェネリッククラス | Microsoft Learn [公式]
ジェネリッククラスとメソッド | Microsoft Learn [公式]
キャスト
参考:
C# における as によるキャストと括弧によるキャストの違い – Qiita
C# でキャストと as 演算子を使いこなす | Ararami Studio
キャストと型変換 | Microsoft Learn [公式]
パターンマッチング/is 演算子/as 演算子を使用して安全にキャストする方法 | Microsoft Learn [公式]
型のテスト演算子とキャスト式 | Microsoft Learn [公式]
インデクサー
プロパティ名を this
としてインデクサーを実装する。本体としてゲッター及びセッターを記述する。
public ReturnType this[KeyType key]
{
get { return _array
; }
set { _array
= value; }
}
Code language: C# (cs)
ドキュメント:
参考:
インデクサーの実装 – クラスの添え字アクセスに対応する | iPentec
図で理解するインデクサの基礎 | 趣味や仕事に役立つ初心者 DIY プログラミング入門
インデクサーを使ってプログラミングをする | .NET コラム
getters / setters with C# array – Unity Answers
How do define get and set for an array data member? – Stack Overflow
getter and setter expression for array property – Stack Overflow
Using the adressed index in an array setter / setter – Stack Overflow
抽象クラス (abstract)
ドキュメント:
abstract | Microsoft Learn [公式]
参考:
抽象クラス (abstract) の使い方を学ぶ | XR-Hub
抽象クラス (abstract) とは?継承や override の手順や使い方をご紹介 | Rainbow Engine
C# の abstract class とは?インターフェイスについても併せて解説! | .NETコラム
abstract – 抽象クラスと抽象メソッドのサンプル | ITSakura
const / static / readonly
参考:
const と readonly と static readonly、それぞれの特徴と使い分け方 – Qiita
const と static readonly の違い – Qiita
const と static readonly の違いと使い分け | PG 日誌
const / readonly / static readonly の使い方/違いについて | nyanblog
const と static read only の違いと使い分けについて – スタック・オーバーフロー
‘static readonly’ vs. ‘const’ – Stack Overflow
派生クラスを判定する
派生クラスを判定するには is
演算子を用いる。C# 9.0 以降では、否定の is not
が使える。
is
:左辺のオブジェクトが右辺のクラスから派生しているか判定するis not
:派生していない場合に真となる (C# 9.0 ~)
ドキュメント:
型のテスト演算子とキャスト式 | Microsoft Learn [公式]
参考:
is 演算子と typeof の型判定の挙動の違い | PG 日誌
型を判別する typeof と is 演算子 | Ararami Studio
インスタンスや型が一致するか/インターフェイスやクラスから派生しているか判定する | smdn.jp
オブジェクトが特定のクラスを継承しているかをチェックして処理分けする | Long-Slow-Distance
派生クラスのオブジェクトを返したい
ドキュメント:
参考:
possible to override a return type on derived classes? – Stack Overflow
override a property and return a derived type – Stack Overflow
Can I override with derived types? – Stack Overflow
インスタンスを破壊/削除する
new
で作成したインスタンスは、null
を代入する。どこからも参照されなくなったオブジェクトは自動的に回収される。
var obj = new Object();
// Use the object here
obj = null;
Code language: C# (cs)
参考:
How to delete object? – Stack Overflow