2022-10-01から1ヶ月間の記事一覧

【C#】MS Test

MS Test VisualStudioで作成できるテストプロジェクトAssert機能を使用して比較を実行することができる。 Assert 期待値と実際の値を比較することができる。 Assert.AreEquals(T Expect, T Actual); Expect:期待値Actual:実際の値 失敗時 Assert.AreEquals…

【C#】Lazy

Lazy<T> 初期化はコストがかかる作業。⇒必要になったときに準備できれば良い。Lazyは初期化遅延で、オブジェクトが初めて使用されるまで、作成が延期される。 internal class Lazy101 { Lazy<Dictionary<int, string>> lIdStrs = new Lazy<Dictionary<int, string>>(() => new()); internal void Exec() { Consol</dictionary<int,></dictionary<int,></t>…

【C#】インターフェイス

インターフェイス(Interface) 単語自体は接触面・境界面という意味。プログラミングではクラスとの境界面のイメージ インターフェイスの実装 public interface IPublicClz1 { public void Display(); } public class PublicSingleClz : IPublicClz1 { public…

【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…