例外処理

【C#】CustomAttributeFormatExceptionの主要な発生パターンと安全な回避方法

C#のCustomAttributeFormatExceptionはカスタム属性のバイナリ形式が不正なときに実行時やリフレクション中に発生します。 原因はparams引数とデフォルト値の併用や列挙型の不正値などパラメータ定義ミスが大半です。

続きを読む »
システム

【C#】DLL作成手順と再利用を最大化する実践方法

C#でDLLを作るにはVisual Studioでクラスライブラリを選び、共有したい機能を持つクラスやメソッドをpublicで実装してビルドするだけです。 生成された.dllを別プロジェクトで参照追加すれば、動的リンクでコードを再利用でき、

続きを読む »
例外処理

【C#】CultureNotFoundExceptionエラーの原因とすぐにできる解決策

CultureNotFoundExceptionは、CultureInfo生成時などに無効なカルチャ名を渡すと発生するランタイム例外です。 カルチャコードのタイプミスやOS未対応が主な原因で、正しいBCP-47形式へ修正するか近い既存カルチ

続きを読む »
システム

【C#】DLLを動的にロードしてメソッドを呼び出す最新テクニックと安全な実装ポイント

Reflectionやdynamic型を使い、Assembly.LoadFromでDLLを読み込みActivator.CreateInstanceでインスタンスを生成してメソッドを呼ぶと、ビルド時参照を固定せず機能を後付けできます。 頻繁な

続きを読む »
システム

【C#】ILMergeとCosturaでDLLを1ファイルにまとめる方法と注意点

複数DLLを1ファイルにまとめたいなら、.NET FrameworkではILMerge、.NET Core以降ではSingle-file publishやILRepack、汎用的に使いやすいのはCostura.Fodyです。 配布をシンプル

続きを読む »
ファイル

【C#】DataSetをJSONへ高速変換するSerializeテクニックと逆変換手順

C#ではDataSetをJSONへ変換する際、System.Text.JsonやNewtonsoft.JsonでDataTableあるいはDataSet全体をSerializeできます。 テーブル名がキーとなり各行が配列要素です。 null

続きを読む »
システム

【C#】DLLデバッグ入門:Visual Studio設定からプロセスアタッチまでブレークポイントを確実に止める方法

DLLをデバッグするには、ビルド設定をDebugにしてpdbを生成し、呼び出しアプリかプロセスにブレークポイントを張るだけで十分です。 ソリューション内に両方あるならスタートアップを実行側に設定し、単体ならプロジェクトのデバッグコマンドに実

続きを読む »
ファイル

【C#】CSV文字コード変換の完全手順:Shift-JIS・UTF-8・BOM対応でExcelの文字化けを防ぐ

C#でCSVの文字化けを防ぐには、読み書き時にStreamReaderやStreamWriterへEncodingを明示すればよいでしょう。 Shift‐JISの読み込みはEncoding.GetEncoding(932)、UTF-8でEx

続きを読む »
システム

【C#】DLLをC++から呼び出す方法―P/InvokeとC++/CLIで学ぶ相互運用の実践

C#で作ったDLLをC++から扱うには、クラスライブラリをDLL化し、COM登録やC++/CLIブリッジで関数を公開し、C++側で#importやP/Invoke相当の宣言を用意します。 ビット数と呼び出し規約、文字列などのマーシャリングを

続きを読む »
ファイル

【C#】CSVを配列に変換する基本テクニックとCsvHelper・TextFieldParserの活用法

CSV文字列やファイルをC#で配列に変換するには、もっとも簡単なのは文字列をSplit(',')で区切る方法ですが、セル内にカンマや改行が含まれる場合はTextFieldParserやCsvHelperなどの専用ライブラリを使うと安全です。

続きを読む »
ファイル

【C#】CSVファイルをオブジェクトへ変換する2通りの実装方法とベストプラクティス

C#でCSVをオブジェクトへ変換する方法には、自前でStreamReaderとSplitを使う手軽な手法と、ライブラリCsvHelperを活用してスマートに扱う手法があります。 手軽な方法は外部依存がない反面、区切り文字や改行を細かく管理す

続きを読む »
クラス

【C#】継承でのコンストラクタ引数指定とbase呼び出しの基本と応用

基底クラスに引数付きコンストラクタのみがある場合、派生クラスのコンストラクタ冒頭で: base(引数)と書き、必ず呼び出す必要があります。 引数なしコンストラクタが基底側にあれば暗黙呼び出しが行われます。 複数オーバーロードを用意すると生成

続きを読む »
クラス

【C#】継承とoverrideで学ぶポリモーフィズムの基本と実践テクニック

C#の継承は基底クラスの機能を派生クラスへ共有し、共通ロジックを再利用できます。 virtualを付けたメンバーは派生側でoverrideして振る舞いを上書きでき、これがオーバーライドです。 ポリモーフィズムにより基底型変数から呼んでも派生

続きを読む »

【C#】組み込み型の種類一覧と特徴・選び方をわかりやすく解説

C#の組み込み型は、整数や浮動小数点、真偽値、文字列、オブジェクトなど基本データを扱うために用意された核となる型群です。 intやdoubleなど値型はメモリ効率と高速計算を支え、stringやobjectなど参照型はデータ構造の柔軟性を担

続きを読む »
演算子

【C#】演算子一覧と使い方完全リファレンス—算術・比較・論理・ビット演算・null合体をマスター

C#の演算子は、数値計算の+ - * / % ++ --、比較の== != < > <= >=、論理の&& || !、ビット操作の& | ^ ~ << >>、複合代入+

続きを読む »
システム

【C#】環境変数の追加方法~プロセス・ユーザー・システム設定の使い分けポイント~

c# で環境変数を追加する際は、Environment.SetEnvironmentVariableメソッドで環境変数の名前、値、ターゲット(プロセス、ユーザー、システム)を指定して設定する方法が利用できます。 これにより、プログラム実行中

続きを読む »
クラス

【C#】継承とインターフェースで作る柔軟かつ拡張性のあるオブジェクト指向設計のテクニック

C#の継承は、親クラスの機能を引き継ぎ再利用性を高めるための仕組みです。 既存のコードを柔軟に活用できる点が魅力です。 一方でインターフェースは、クラスが実装すべきメソッドやプロパティの契約ごとを定め、異なるクラス間で一貫した動作を実現する

続きを読む »
システム

【C#】Environment.GetEnvironmentVariableで実現する環境変数取得と全変数リスト表示の方法

C#では、環境変数はEnvironment.GetEnvironmentVariableメソッドでシンプルに取得でき、変数名を指定するだけで必要な値を得ることができます。 また、全体の環境変数はEnvironment.GetEnvironm

続きを読む »
配列&コレクション

[C#] 配列から要素を削除する方法|List変換とLINQで実践的に解決

C#の配列は固定サイズなので、直接の削除はできません。 削除する場合、削除したい要素を除外して新たな配列を作成する方法や、一度配列をListに変換し削除後に再度配列化する方法が利用できます。 また、要素に初期値を上書きしたり、Array.C

続きを読む »
Back to top button