2022-10-05から1日間の記事一覧

【C#】virtual

virtual インスタンスに応じて実行する処理を変える(ポリモーフィズム)を実現する。

【C#】抽象

抽象 "動物"などあくまで抽象的な概念 抽象クラス abstractキーワードが指定されたクラス。 abstract class ClassName{} 抽象メソッド abstractキーワードが指定されたメソッド。実装を持たず、メソッドの意味のみを定義したメソッドで、継承先で必ずオーバ…

【C#】キャスト is as

is 戻り値がboolで型がキャスト可能かを返す。 as 戻り値はキャスト対象で、キャストできない場合はnullを返す。

【C#】パターンマッチング

パターンマッチング データの型およびその中身を確認し、指定したパターンと一致した場合に処理を実行する機能。 switch switch caseで使用する。 class A{} class B : A{} class C : A{} public void Something(A inst) { switch(inst) { case A a: // some…

【C#】インライン展開

インライン展開 関数の呼び出しは呼び出し時と戻り時のジャンプでコストがかかる。基本的にコンパイラーは前後の文脈からある程度最適化してくれる。C#にはないが、.NETでは属性を指定することでインライン展開を指定できる。 [MethodImpl(enum MethodImplOp…

【C#】overrideとnewの違い

new 派生クラスに新たに追加される。フィールドの型に応じて呼び出しメソッドが決められる。 override 基底クラスのメソッドをオーバーライドする。インスタンスの型に応じて呼び出しメソッドが決められる。 フィールドの型とインスタンスの型 class A { int…