動くコード図鑑技術記事現場の渡り方キャリア論すべての記事About

動くコード図鑑

$ ls -1 /library | wc -l → 619

触って動く、検証済みの正解集。

公開記事から抽出した全コードブロックを 1 つずつページ化。 ▶ ボタンで 実行ログを再生し、 さも今動いてるかのように出力を流す。

この図鑑の使い方

言語で絞る

C# / SQL / TypeScript / PowerShell / Bash でフィルタ。

▶ で実行

事前収録の出力を 1 行ずつ再生。 ぱっと結果が見える。

記事と接続

各 snippet は出典記事へのリンク付き。 文脈ごと読める。

絞り込み

snippet 一覧

619
C#
// ✅定石2:入れ子usingで複数IDisposableを扱う
using (var conn = new SqlConnection(connStr))
using (var cmd = new SqlCommand("SELECT id, name FROM users WHERE status = @s", conn))
{
    conn.Open();

定石2:複数IDisposableは入れ子usingで書く

C# 例外処理の正解 — try-catch-finally / using / Exception フィルタ (when句) の使い分け未収録#740c9638ff8a
C#
// ✅定石3-a: Exceptionフィルタ(when句)でデッドロックだけリトライ
try
{
    ExecuteSql();
}
▶ 実行可

定石3: Exceptionフィルタ(when句)でcatch内if分岐を排除

C# 例外処理の正解 — try-catch-finally / using / Exception フィルタ (when句) の使い分け#2abecfea594d
C#
// ❌ NG: throw ex;はスタックトレースが「rethrowした行」でリセットされる
public void OuterMethod()
{
    try
    {
▶ 実行可

定石4: throw vs throw exのスタックトレース挙動

C# 例外処理の正解 — try-catch-finally / using / Exception フィルタ (when句) の使い分け#08d0e82d4c16
C#
// ❌ NG:例外を捕まえてログも吐かず処理を続ける
try
{
    SaveOrder(order);
}

1. catch (Exception){ }で全握りつぶし

C# 例外処理の正解 — try-catch-finally / using / Exception フィルタ (when句) の使い分け未収録#8c7dfdd9cccc
C#
// ❌ NG: finally内で例外が出ると元の例外が上書きされる
SqlConnection conn = null;
try
{
    conn = new SqlConnection(connStr);

2. finallyで例外スローして元の例外が消える

C# 例外処理の正解 — try-catch-finally / using / Exception フィルタ (when句) の使い分け未収録#2243ed770fc8
C#
// ❌ NG: Open()で例外が出るとDispose()が呼ばれない
SqlConnection conn = new SqlConnection(connStr);
conn.Open();   // ←ここで例外が出ると、connがusingの外なのでDispose()されない
using (conn)
{

3. usingとOpen()の順序ミス

C# 例外処理の正解 — try-catch-finally / using / Exception フィルタ (when句) の使い分け未収録#22920b27e7c6
C#
// ❌ NG:派生型を後ろに書くと到達不能(コンパイルエラー)
try { ... }
catch (Exception ex){ /* 全部ここに来る */ }
catch (SqlException ex){ /* ←ここには到達しない、コンパイルエラー */ }

4. catch (DbException)とcatch (Exception)の順序

C# 例外処理の正解 — try-catch-finally / using / Exception フィルタ (when句) の使い分け未収録#3e0a5ff2f976
C#
// ❌ NG:内部例外を渡さないと元の情報が失われる
catch (SqlException ex)
{
    throw new ApplicationException("注文処理に失敗");   // ← exを渡してない
}

5.例外をラップする時に内部例外を渡し忘れる

C# 例外処理の正解 — try-catch-finally / using / Exception フィルタ (when句) の使い分け未収録#987696d7670f
C#
// ✅定石1: StreamReader + usingでShift-JIS読み込み
using System.IO;
using System.Text;

var sjis = Encoding.GetEncoding("shift_jis");

定石1: StreamReader + using + Encoding指定

C# ファイルIO の正解 — StreamReader / File.ReadAllLines / File.ReadLines / using の使い分け未収録#3070cb2953d8
C#
// ✅定石2: File.ReadAllLinesで一発配列化
using System.IO;
using System.Text;

string[] lines = File.ReadAllLines(@"C:\input\config.txt", Encoding.UTF8);

定石2: File.ReadAllLines —小ファイル向きの一撃

C# ファイルIO の正解 — StreamReader / File.ReadAllLines / File.ReadLines / using の使い分け未収録#416c419f6cb7
C#
// ✅定石3: File.ReadLinesで大ファイルをストリーム処理
using System.IO;
using System.Text;

// IEnumerable<string>なのでforeachで1行ずつ読む(メモリには1行分しか乗らない)

定石3: File.ReadLines —大ファイルのストリーム読み込み

C# ファイルIO の正解 — StreamReader / File.ReadAllLines / File.ReadLines / using の使い分け未収録#275aa66b0c4b
C#
// ✅定石4:性能比較(10万行×約100MBのログを想定)
const string path = @"C:\logs\big-app.log";

// ReadAllLines版(メモリに全部ロード)
GC.Collect(); GC.WaitForPendingFinalizers();
▶ 実行可

定石4:性能比較— Stopwatch + GC.GetTotalMemory

C# ファイルIO の正解 — StreamReader / File.ReadAllLines / File.ReadLines / using の使い分け#976121387821
C#
// ✅定石5: FileShare.ReadWriteで同時アクセスを許可
using System.IO;
using System.Text;

using (var fs = new FileStream(@"C:\logs\writing.log",

定石5: FileShareで同時アクセスを扱う

C# ファイルIO の正解 — StreamReader / File.ReadAllLines / File.ReadLines / using の使い分け未収録#6cd0545383e7
C#
// ✅定石6: BOMの有無で簡易判定(業務系で雑なエンコーディング判定)
public static Encoding DetectEncoding(string path)
{
    var bytes = new byte[4];
    using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read))

定石6:エンコーディング判定の実践— Shift-JISとBOM付きUTF-8の見分け

C# ファイルIO の正解 — StreamReader / File.ReadAllLines / File.ReadLines / using の使い分け未収録#2c74893d554e
C#
namespace FormInForm
{
    public partial class MainForm : Form
    {
        private Form form1;

MainFormロード時に下記コードを実行するようにする。

【C#】Formの中にFormを表示して良い感じに切り替える未収録#c5f185b53015
C#
        private void button1_Click(object sender, EventArgs e)
        {
            HideAllForm();
            form1.Show();
        }    private void button2_Click(object sender, EventArgs e)

ボタンにメソッドを追加していく

【C#】Formの中にFormを表示して良い感じに切り替える未収録#e3ab3846c3b0
C#
    public partial class MainForm : Form
    {
        private Form form1;
        private Form form2;
        private Form form3;    private Color _activeColor = Color.Aquamarine;

アクティブなFormのButtonの色を変える

【C#】Formの中にFormを表示して良い感じに切り替える未収録#2a4145d317d4
C#
        private void MainForm_Load(object sender, EventArgs e)
        {
            form1 = new Form1();
            form1.TopLevel = false;
            form1.Dock = DockStyle.Fill;

アクティブなFormのButtonの色を変える

【C#】Formの中にFormを表示して良い感じに切り替える未収録#1231b8968340
C#
        private void button1_Click(object sender, EventArgs e)
        {
            form2.Hide();
            form3.Hide();        form1.Show();

アクティブなFormのButtonの色を変える

【C#】Formの中にFormを表示して良い感じに切り替える未収録#87853255d4ae
C#
        private void button2_Click(object sender, EventArgs e)
        {
            form1.Hide();
            form3.Hide();        form2.Show();

リアファクタリング

【C#】Formの中にFormを表示して良い感じに切り替える未収録#dca8ec96b793
C#
    public partial class MainForm : Form
    {
        private Form form1;
        private Form form2;
        private Form form3;    private IEnumerable<Form> _subForms;

リアファクタリング

【C#】Formの中にFormを表示して良い感じに切り替える未収録#dd97c1ad6b79
C#
        private void MainForm_Load(object sender, EventArgs e)
        {
            form1 = new Form1();
            form1.TopLevel = false;
            form1.Dock = DockStyle.Fill;

リアファクタリング

【C#】Formの中にFormを表示して良い感じに切り替える未収録#14e000ced131
C#
        private void ShowForm(Form form)
        {
            // subFormの配列をぶん回して引数のFormと一致してたら表示して、
            // 一致してなかったら隠す
            foreach (var f in _subForms)

リアファクタリング

【C#】Formの中にFormを表示して良い感じに切り替える未収録#79d1595b94ee
C#
        private void button1_Click(object sender, EventArgs e)
        {
            ShowForm(form1);
            ActivateBtn((Button)sender);
        }    private void button2_Click(object sender, EventArgs e)

リアファクタリング

【C#】Formの中にFormを表示して良い感じに切り替える未収録#71fecd1b8fb7
C#
        private void button1_Click(object sender, EventArgs e)
        {
            var form = new Form2();
            this.Hide();

各Formで別Formを表示するときのコード

【C#】Formから別フォームを表示しメインフォームを切り替える未収録#9e8b811d3121
C#
namespace FormToForm
{
    public partial class Form2 : Form
    {
        public Form2()

Form2とForm3のコードはこんな感じ

【C#】Formから別フォームを表示しメインフォームを切り替える未収録#14d449cb998d
C#
namespace FormToForm
{
    public partial class Form3 : Form
    {
        public Form3()

Form2とForm3のコードはこんな感じ

【C#】Formから別フォームを表示しメインフォームを切り替える未収録#aa8f18c87671
C#
//親フォーム側
private void btnSelectMaster_Click(object sender, EventArgs e)
{
    using (var dlg = new MasterSelectForm())
    {

ShowDialogはモーダル—呼び出し側が止まる

C# WinForms の Form.ShowDialog と Form.Show の違いと使い分け完全ガイド未収録#e8e9c186bc59
C#
//親フォーム側
private ProgressForm _progressForm;

private void btnStartImport_Click(object sender, EventArgs e)
{

Showはモードレス—呼び出し側は動き続ける

C# WinForms の Form.ShowDialog と Form.Show の違いと使い分け完全ガイド未収録#fdb171e5159f
C#
//取引先選択ダイアログを開いて、選ばれたコードを画面に反映する
using (var dlg = new TorihikiSelectForm())
{
    if (dlg.ShowDialog(this)== DialogResult.OK)
    {

1.マスタ参照ダイアログ→ ShowDialog

C# WinForms の Form.ShowDialog と Form.Show の違いと使い分け完全ガイド未収録#71eafd998336