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

動くコード図鑑

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

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

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

この図鑑の使い方

言語で絞る

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

▶ で実行

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

記事と接続

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

絞り込み

snippet 一覧

619
C#
//進捗フォームをShowして、本処理は呼び出し側で並行進行
var progress = new ProgressForm { Owner = this };
progress.Show();

try

2.進捗・常時表示フォーム→ Show

C# WinForms の Form.ShowDialog と Form.Show の違いと使い分け完全ガイド未収録#cd795de2af89
C#
using (var dlg = new SettingsForm(currentSettings))
{
    if (dlg.ShowDialog(this)== DialogResult.OK)
    {
        currentSettings = dlg.UpdatedSettings;

3.設定画面・確認ダイアログ→ ShowDialog

C# WinForms の Form.ShowDialog と Form.Show の違いと使い分け完全ガイド未収録#b50f7b7bc638
C#
// ❌ NG: dlgがGC待ちで残り続ける
var dlg = new MasterSelectForm();
dlg.ShowDialog(this);
//この後dlgを参照していなくても、Disposeされないので残骸が残る

① ShowDialog後のDispose忘れでメモリ食い続ける

C# WinForms の Form.ShowDialog と Form.Show の違いと使い分け完全ガイド未収録#ff776b9ad022
C#
// ❌ 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
C#
// ❌ NG: Ownerなし。タスクバーに別ウィンドウとして並ぶ
var sub = new SubForm();
sub.Show();

// ✅ OK: Owner設定で親子関係明示。タスクバーアイコンも統合される

③ Owner未設定で最前面に出ない・タスクバーに別ウィンドウとして出る

C# WinForms の Form.ShowDialog と Form.Show の違いと使い分け完全ガイド未収録#a34b20a08033
C#
//サブフォーム側
public string SelectedCode { get; private set; }

private void btnOK_Click(object sender, EventArgs e)
{

Q1. ShowDialogで開いたフォームから値を返す一番素直な方法は?

C# WinForms の Form.ShowDialog と Form.Show の違いと使い分け完全ガイド未収録#97364f9224b2
C#
//サブフォーム
public event EventHandler<string> CodeSelected;

//何か選んだ時
CodeSelected?.Invoke(this, selectedCode);

Q2. Showで開いたフォームから親に値を渡したい時は?

C# WinForms の Form.ShowDialog と Form.Show の違いと使い分け完全ガイド未収録#42adaad26570
C#
namespace BringValueWithForm
{
    public partial class Form1 : Form
    {
        public Form1()

パターン1:MainFormから別Formに値を渡す

【C#】FormとFormの間で値の共有・受け渡しをする!未収録#e215eceeed22
C#
namespace BringValueWithForm.Pattern1
{
    public partial class SubForm : Form
    {
        private string _str;

パターン1:MainFormから別Formに値を渡す

【C#】FormとFormの間で値の共有・受け渡しをする!未収録#1c1697e8fdfe
C#
namespace BringValueWithForm.Pattern2
{
    public partial class MainForm2 : Form
    {
        public MainForm2()

パターン2:MainFormで別Formから値をもらう

【C#】FormとFormの間で値の共有・受け渡しをする!未収録#34e2b76b4236
C#
namespace BringValueWithForm.Pattern2
{
    public partial class SubForm2 : Form
    {
        public string TextBox1Str { get; private set; } = "";

パターン2:MainFormで別Formから値をもらう

【C#】FormとFormの間で値の共有・受け渡しをする!未収録#e709499ee21f
C#
// ❌コンパイルエラー: CS0403
public static T GetDefault<T>()
{
    T item = null;  // 'T'を'null'に変換できません
    return item;

なぜジェネリック制約が必要なのか— T item = null;がコンパイルエラーになる理由

C# Generic 制約 (where T : …) — 業務SE が型安全コードを書く5パターン未収録#ea71b9dd152d
C#
// ✅対処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
C#
// ✅ 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
C#
// ✅ 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
C#
// ❌制約なしだと実行時MissingMethodExceptionリスクあり
public class FactoryBroken<T>
{
    public T Create()
    {

パターン3: where T : new() —引数なしコンストラクタを持つ型のみ

C# Generic 制約 (where T : …) — 業務SE が型安全コードを書く5パターン未収録#4b27b8ab4d3c
C#
// ✅ 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
C#
//基底クラス
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
C#
//順序ルール: classまたはstruct →基底クラス→ Interface → new()

// ✅正しい順序
public class FullRepo<T> where T : class, EntityBase, IDisposable, new()
{

複数制約の組み合わせ—順序ルール

C# Generic 制約 (where T : …) — 業務SE が型安全コードを書く5パターン未収録#59304874af61
C#
//組み合わせ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
C#
public class GenericContainer<T>
{
    private T _value;

    // ❌制約なしでnull比較するとCS0019など

ハマりポイント整理— default(T) vs nullの使い分け

C# Generic 制約 (where T : …) — 業務SE が型安全コードを書く5パターン未収録#06eaa23742b4
C#
    public static class IntExtenssionMethod
    {
        public static int Square(this int num)
        {
            return num * num;

そもそも拡張メソッドとは?

C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる未収録#ada51f9d3b8b
C#
    class Program
    {
        static void Main(string[] args)
        {
            int num = 2;
▶ 実行可

そもそも拡張メソッドとは?

C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる#2eff0113ecce
C#
    public static class StringExtenssionMethod
    {
        public static string Decoration(this string str)
        {
            return $@"*{str}*";

そもそも拡張メソッドとは?

C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる未収録#485517d8bf92
C#
            string str = "Hello World";
            Console.WriteLine(str.Decoration());
            Console.ReadLine();
▶ 実行可

そもそも拡張メソッドとは?

C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる#75178f10b7fa
C#
namespace InterfaceExtenssionMethod
{
    public interface IAnimal
    {
        string RoarSound { get; }

Interfaceに拡張メソッドを入れるとデフォルト実装できる

C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる未収録#9d80b8e1e416
C#
    public static class AnimalExtenssionMethod
    {
        public static void Roar(this IAnimal animal)
        {
            Console.WriteLine(animal.RoarSound);
▶ 実行可

Interfaceに拡張メソッドを入れるとデフォルト実装できる

C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる#c0e9f3bf46f1
C#
    public class Dog : IAnimal
    {
        public string RoarSound => "わんわん";
    }

Interfaceに拡張メソッドを入れるとデフォルト実装できる

C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる未収録#bbdeb9f5ad88
C#
            var dog = new Dog();
            dog.Roar();
            Console.ReadLine();
▶ 実行可

Interfaceに拡張メソッドを入れるとデフォルト実装できる

C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる#7a4021c0d58e
C#
            var dog = new Dog();
            var cat = new Cat();
            dog.Roar();
            cat.Roar();
            Console.ReadLine();
▶ 実行可

Interfaceに拡張メソッドを入れるとデフォルト実装できる

C#でInterfaceに拡張メソッドを追加してデフォルト実装してみる#f566dee7ce20