文法

スポンサーリンク
.NET 5 / C#9.0

呼ばれないファイナライザー

公式ページでの解説 ※この記事は2020年12月に書いています。 .NETの開発者向けの公式ドキュメントの記事はこちら 一部引用すると ガベージ コレクターによってクラス インスタンスが収集されている場合は、ファイナライザー (デストラクタ...
.NET 5 / C#9.0

.NET 5 でSJISを使う方法

SJISを使う場合はRegisterProvider エンコードプロバイダを登録すれば使えるようになる。 using System.Text; Encoding.RegisterProvider(CodePagesEncodingProvi...
集合

Span構造体とstackalloc 式

C#7.2 以降で使えます。.NET Core2.0以前ならSystem.Memoryというパッケージが必要です。 配列やコレクションやストリームやその他諸々の連続した領域の一部に効率的にアクセスできるための機能です。 .NET 5では標準...
集合

System.Collections.Generic 名前空間にあるコレクションクラス群

同じ型のデータをまとめて扱うのに、基本は配列ですが、固定長という使いずらさがあります。 System.Collections名前空間にある各コレクションクラスでは、可変長で扱えましたが型の情報が欠落するためキャストが必要という使いずらさがあ...
集合

System.Collections コレクションとデータ構造

配列が同じ型の固定長のデータを扱うのに対し、System.Collections名前空間に定義さているコレクションクラスでは、可変長のデータを扱います。 可変長のデータを扱えるのですが、型の情報が欠落するため、取り出した後にキャスト等の処理...
集合

配列の操作

配列の操作 System.Arrayクラス 配列に関するメソッド群がSystem.Arrayクラスで提供されています。 配列の作成、操作、検索、並べ替え、などなど。 以下のコードはそのうちのいくつかです。こんなのが沢山あります。 int[]...
集合

配列 きほんのき

配列 配列は、同じ型のデータをまとめて扱うための固定長の領域です。 可変長を簡単に扱えるコレクションクラスにより出番は減りましたが、重要性は変わりません。 C#(.NET)の配列はSystem.Arrayクラスを暗黙的に継承する参照型です。...
基本用法

文字列操作のいろいろ 

C#言語での文字列 C#言語での文字列は、文字型の配列ではなく、文字列型のオブジェクトです。 つまり、System.Char構造体の配列ではなく、System.Stringクラスのオブジェクトです。 Stringとstring String...
基本用法

弱い参照 WeakReferenceとWeakEventPatternと

C#でのメモリ管理は実行環境である.NETお任せです。 使い終わったらガベージコレクタが自動で回収してくれるので、プログラマが逐一破棄処理を明示的に記述する必要はありません。 生成されたインスタンスが使用中か否かは、そのインスタンスへの参照...
基本用法

遅延初期化 Lazy & LazyInitializer

通常の初期化処理はコンストラクタ等で行います。 初期化コストの大きなものや、使うとも限らない機能などは、最初に準備せずとも必要になったら準備できればよい。 このように初期化の契機を遅らせる実装を遅延初期化と言います。 // 大きいクラスと仮...
基本用法

再帰呼出し ラムダで簡単に

再帰呼出しは、メソッドの中からそのメソッド自身を呼び出す類の処理のことを言います。 階乗計算やフィボナッチ数列の例ばかりが見つかりますが、他にもいろいろと活躍の場が多い実装方式です。 ここではフォルダ内の全てのファイルパスをリスト化するサン...
基本文法

インタフェース(C#8.0以降の追加文法)

C#8.0からインタフェースに大幅な機能追加が行われました C#8.0以前のインタフェースはシグネチャだけを集めた純粋仮想関数みたいなものでしたが、 C#8.0以降のインタフェースはインスタンスフィールドを持てない抽象クラスのような感じです...
基本文法

イテレーター 実装方法とその中身

イテレーター イテレーターとは反復子ともいわれ、集合の個々の要素に対して繰り返し処理を行うためのものです。 C#言語においては、主にforeachで使われるためのものであり、以下のように定義されます。 戻りの型は以下の4つのうちのいずれかの...
基本用法

ボックス化とボックス化解除とそのコスト

ボックス化とボックス化解除 C#言語では、すべての型はSystem.Objectクラスから派生しており、継承関係のある型は代入が可能です。 これは、値型である構造体などを派生型であるObject型へ変換可能なことも意味しています。 このよう...
基本用法

呼び出し元の情報取得

Caller Info属性 .NET Framework 4.5 から追加された機能です 以下のサンプルコードのように、引数にinfo属性とデフォルト引数とを付与したパラメタを追加するこにより、コンパイル時に呼び出し元の情報を取得することが...
スポンサーリンク