動くコード図鑑
$ ls -1 /library | wc -l → 619
触って動く、検証済みの正解集。
公開記事から抽出した全コードブロックを 1 つずつページ化。 ▶ ボタンで 実行ログを再生し、 さも今動いてるかのように出力を流す。

この図鑑の使い方
言語で絞る
C# / SQL / TypeScript / PowerShell / Bash でフィルタ。
▶ で実行
事前収録の出力を 1 行ずつ再生。 ぱっと結果が見える。
記事と接続
各 snippet は出典記事へのリンク付き。 文脈ごと読める。
絞り込み
snippet 一覧
619 件//進捗フォームをShowして、本処理は呼び出し側で並行進行 var progress = new ProgressForm { Owner = this }; progress.Show(); try
2.進捗・常時表示フォーム→ Show
C# WinForms の Form.ShowDialog と Form.Show の違いと使い分け完全ガイド未収録#cd795de2af89
using (var dlg = new SettingsForm(currentSettings)) { if (dlg.ShowDialog(this)== DialogResult.OK) { currentSettings = dlg.UpdatedSettings;
3.設定画面・確認ダイアログ→ ShowDialog
C# WinForms の Form.ShowDialog と Form.Show の違いと使い分け完全ガイド未収録#b50f7b7bc638
// ❌ NG: dlgがGC待ちで残り続ける var dlg = new MasterSelectForm(); dlg.ShowDialog(this); //この後dlgを参照していなくても、Disposeされないので残骸が残る
① ShowDialog後のDispose忘れでメモリ食い続ける
C# WinForms の Form.ShowDialog と Form.Show の違いと使い分け完全ガイド未収録#ff776b9ad022
// ❌ NG:押すたびに新しいLogFormが開く private void btnShowLog_Click(object sender, EventArgs e) { var log = new LogForm(); log.Show();
② Showで同じフォームを2回開いてNRE
C# WinForms の Form.ShowDialog と Form.Show の違いと使い分け完全ガイド未収録#92936fb74410
// ❌ NG: Ownerなし。タスクバーに別ウィンドウとして並ぶ var sub = new SubForm(); sub.Show(); // ✅ OK: Owner設定で親子関係明示。タスクバーアイコンも統合される
③ Owner未設定で最前面に出ない・タスクバーに別ウィンドウとして出る
C# WinForms の Form.ShowDialog と Form.Show の違いと使い分け完全ガイド未収録#a34b20a08033
//サブフォーム側 public string SelectedCode { get; private set; } private void btnOK_Click(object sender, EventArgs e) {
Q1. ShowDialogで開いたフォームから値を返す一番素直な方法は?
C# WinForms の Form.ShowDialog と Form.Show の違いと使い分け完全ガイド未収録#97364f9224b2
//サブフォーム public event EventHandler<string> CodeSelected; //何か選んだ時 CodeSelected?.Invoke(this, selectedCode);
Q2. Showで開いたフォームから親に値を渡したい時は?
C# WinForms の Form.ShowDialog と Form.Show の違いと使い分け完全ガイド未収録#42adaad26570
namespace BringValueWithForm { public partial class Form1 : Form { public Form1()
パターン1:MainFormから別Formに値を渡す
【C#】FormとFormの間で値の共有・受け渡しをする!未収録#e215eceeed22
namespace BringValueWithForm.Pattern1 { public partial class SubForm : Form { private string _str;
パターン1:MainFormから別Formに値を渡す
【C#】FormとFormの間で値の共有・受け渡しをする!未収録#1c1697e8fdfe
namespace BringValueWithForm.Pattern2 { public partial class MainForm2 : Form { public MainForm2()
パターン2:MainFormで別Formから値をもらう
【C#】FormとFormの間で値の共有・受け渡しをする!未収録#34e2b76b4236
namespace BringValueWithForm.Pattern2 { public partial class SubForm2 : Form { public string TextBox1Str { get; private set; } = "";
パターン2:MainFormで別Formから値をもらう
【C#】FormとFormの間で値の共有・受け渡しをする!未収録#e709499ee21f
// ❌コンパイルエラー: CS0403 public static T GetDefault<T>() { T item = null; // 'T'を'null'に変換できません return item;
なぜジェネリック制約が必要なのか— T item = null;がコンパイルエラーになる理由
C# Generic 制約 (where T : …) — 業務SE が型安全コードを書く5パターン未収録#ea71b9dd152d
// ✅対処1: where T : classで参照型に絞る public static T GetDefault<T>()where T : class { T item = null; // OK return item;
なぜジェネリック制約が必要なのか— T item = null;がコンパイルエラーになる理由
C# Generic 制約 (where T : …) — 業務SE が型安全コードを書く5パターン未収録#9b560add64cf
// ✅ Tは参照型のみ public class Cache<T> where T : class { private readonly Dictionary<string, T> _store = new Dictionary<string, T>();
パターン1: where T : class —参照型のみ許容
C# Generic 制約 (where T : …) — 業務SE が型安全コードを書く5パターン未収録#5262b3f47b63
// ✅ Tは値型のみ(int / DateTime / struct / enum) public class NullableWrapper<T> where T : struct { private T? _value; // Nullable<T>として宣言
パターン2: where T : struct —値型のみ許容
C# Generic 制約 (where T : …) — 業務SE が型安全コードを書く5パターン未収録#1bef6345d897
// ❌制約なしだと実行時MissingMethodExceptionリスクあり public class FactoryBroken<T> { public T Create() {
パターン3: where T : new() —引数なしコンストラクタを持つ型のみ
C# Generic 制約 (where T : …) — 業務SE が型安全コードを書く5パターン未収録#4b27b8ab4d3c
// ✅ TはIDisposable実装のみ public class DisposableScope<T> where T : IDisposable { private readonly T _resource;
パターン4: where T : IDisposable — Interface実装制約
C# Generic 制約 (where T : …) — 業務SE が型安全コードを書く5パターン未収録#13cf670d5462
//基底クラス public abstract class EntityBase { public int Id { get; set; } public DateTime CreatedAt { get; set; }
パターン5: where T : EntityBase —基底クラス制約
C# Generic 制約 (where T : …) — 業務SE が型安全コードを書く5パターン未収録#778e81884812
//順序ルール: classまたはstruct →基底クラス→ Interface → new() // ✅正しい順序 public class FullRepo<T> where T : class, EntityBase, IDisposable, new() {
複数制約の組み合わせ—順序ルール
C# Generic 制約 (where T : …) — 業務SE が型安全コードを書く5パターン未収録#59304874af61
//組み合わせ1:業務系Repository<T> public class Repository<T> where T : class, new(){ /* ... */ } //組み合わせ2: IDisposable + usingで安全に使える参照型 public class SafeScope<T> where T : class, IDisposable { /* ... */ }
複数制約の組み合わせ—順序ルール
C# Generic 制約 (where T : …) — 業務SE が型安全コードを書く5パターン未収録#c1aad3b4f0bb
public class GenericContainer<T> { private T _value; // ❌制約なしでnull比較するとCS0019など
ハマりポイント整理— default(T) vs nullの使い分け
C# Generic 制約 (where T : …) — 業務SE が型安全コードを書く5パターン未収録#06eaa23742b4
public static class IntExtenssionMethod { public static int Square(this int num) { return num * num;
そもそも拡張メソッドとは?
C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる未収録#ada51f9d3b8b
class Program { static void Main(string[] args) { int num = 2;
▶ 実行可
そもそも拡張メソッドとは?
C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる#2eff0113ecce
public static class StringExtenssionMethod { public static string Decoration(this string str) { return $@"*{str}*";
そもそも拡張メソッドとは?
C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる未収録#485517d8bf92
string str = "Hello World"; Console.WriteLine(str.Decoration()); Console.ReadLine();
▶ 実行可
そもそも拡張メソッドとは?
C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる#75178f10b7fa
namespace InterfaceExtenssionMethod { public interface IAnimal { string RoarSound { get; }
Interfaceに拡張メソッドを入れるとデフォルト実装できる
C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる未収録#9d80b8e1e416
public static class AnimalExtenssionMethod { public static void Roar(this IAnimal animal) { Console.WriteLine(animal.RoarSound);
▶ 実行可
Interfaceに拡張メソッドを入れるとデフォルト実装できる
C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる#c0e9f3bf46f1
public class Dog : IAnimal { public string RoarSound => "わんわん"; }
Interfaceに拡張メソッドを入れるとデフォルト実装できる
C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる未収録#bbdeb9f5ad88
var dog = new Dog(); dog.Roar(); Console.ReadLine();
▶ 実行可
Interfaceに拡張メソッドを入れるとデフォルト実装できる
C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる#7a4021c0d58e
var dog = new Dog(); var cat = new Cat(); dog.Roar(); cat.Roar(); Console.ReadLine();
▶ 実行可
Interfaceに拡張メソッドを入れるとデフォルト実装できる
C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる#f566dee7ce20