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

この図鑑の使い方
言語で絞る
C# / SQL / TypeScript / PowerShell / Bash でフィルタ。
▶ で実行
事前収録の出力を 1 行ずつ再生。 ぱっと結果が見える。
記事と接続
各 snippet は出典記事へのリンク付き。 文脈ごと読める。
絞り込み
snippet 一覧
619 件// ✅パターン1: is +パターンマッチ(C# 7以降の本命) public void Process(object data) { if (data is IDataLoader loader) {
▶ 実行可
パターン1: is +パターンマッチング(C# 7以降の本命)
C# Interface の継承判定と暗黙キャストの定石(is / as / 暗黙キャスト 3パターン)#159cd4da0496
// ✅パターン2: as + nullチェック(複数候補をフラットに並べる) public string Describe(object obj) { var loader = obj as IDataLoader; if (loader != null)return $"Loader: {loader.SourceName}";
パターン2: as + nullチェック(複数候補を並べる時)
C# Interface の継承判定と暗黙キャストの定石(is / as / 暗黙キャスト 3パターン)未収録#303ce1480b7a
// ✅パターン3-a:暗黙キャスト(継承関係が静的型レベルで明確) public class CsvLoader : IDataLoader { /* 実装 */ } CsvLoader csvLoader = new CsvLoader(); IDataLoader loader = csvLoader; // ✅暗黙キャストOK(CsvLoader → IDataLoader)
パターン3:暗黙キャストと直接キャスト(型が確定している時だけ)
C# Interface の継承判定と暗黙キャストの定石(is / as / 暗黙キャスト 3パターン)未収録#113b3d707a4c
// ❌罠1:値型InterfaceでBoxing大量発生(性能劣化) public struct Point : IComparable<Point> { public int X { get; set; } public int Y { get; set; }
ハマりポイント— BoxingとGetType()誤用
C# Interface の継承判定と暗黙キャストの定石(is / as / 暗黙キャスト 3パターン)未収録#41267d4898a1
// ❌罠2: GetType()でInterface判定はできない if (obj.GetType()== typeof(IDataLoader))// ←常にfalse { //ここには到達しない(常にfalse) }
ハマりポイント— BoxingとGetType()誤用
C# Interface の継承判定と暗黙キャストの定石(is / as / 暗黙キャスト 3パターン)未収録#c0d195d72647
namespace InterfaceExample { public interface ISayHello { void Say();
まずはInterfaceを定義
【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!未収録#a3072e9f21f7
using System;namespace InterfaceExample { public class CSharpHello : ISayHello { public void Say()
▶ 実行可
Interfaceを継承したクラスを定義
【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!#9b430c6ee487
using System;namespace InterfaceExample { public class VBnetHello : ISayHello { public void Say()
▶ 実行可
Interfaceを継承したクラスを定義
【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!#950dfa8ee749
namespace InterfaceExample { class Program { static void Main(string[] args)
Interfaceの配列を定義
【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!未収録#25928746ad18
class Program { static void Main(string[] args) { var helloList = new ISayHello[]
▶ 実行可
配列をぶん回して実行
【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!#e9039e6a9d95
using System;namespace InterfaceExample { public class FreeHello : ISayHello { private string _helloItem;
▶ 実行可
自由にHelloというクラスを作ってみる
【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!#13efe9b65211
namespace InterfaceExample { class Program { static void Main(string[] args)
▶ 実行可
自由にHelloというクラスを作ってみる
【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!#12ac9226ce1e
namespace InterfaceExample { public interface IGetHello { string GetHello();
ISayHelloのInterfaceを引数に取る関数を作ってみる
【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!未収録#acaa8007a613
namespace InterfaceExample { public class CSharpHello : IGetHello { public string GetHello()
ISayHelloのInterfaceを引数に取る関数を作ってみる
【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!未収録#91fbdbdc763e
namespace InterfaceExample { public class VBnetHello : IGetHello { public string GetHello()
ISayHelloのInterfaceを引数に取る関数を作ってみる
【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!未収録#905dcaa482b2
namespace InterfaceExample { public class FreeHello : IGetHello { private string _helloItem;
ISayHelloのInterfaceを引数に取る関数を作ってみる
【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!未収録#6dbef8e0f7e9
namespace InterfaceExample { class Program { static void Main(string[] args)
▶ 実行可
ISayHelloのInterfaceを引数に取る関数を作ってみる
【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!#af07081ba3c2
var strs = new List<string>() { "山田", "鈴木", "小林",
▶ 実行可
普通にLinqを使う
C#でLinqを使って特定の条件に一致するものをカウントする。#a45a64bd8cc9
static bool IsContainYama(string str) { return str.Contains("山"); }
Linqの中で関数を使う
C#でLinqを使って特定の条件に一致するものをカウントする。未収録#b20a1695e40b
static void Case2() { var strs = new List<string>() { "山田",
▶ 実行可
Linqの中で関数を使う
C#でLinqを使って特定の条件に一致するものをカウントする。#5c3cab99527f
static void Case3() { var strs = new List<string>() { "山田",
▶ 実行可
Linqに直接関数を投げる
C#でLinqを使って特定の条件に一致するものをカウントする。#e71c6fab9d33
// ✅ WhereでNull排除 var names = users .Where(u => u != null) .Select(u => u.Name) .ToList();
イディオム1: Where(x => x != null)でNullを弾く
C# Linq で Null を回避する書き方とパフォーマンス(業務SEのコピペで動くやつ)未収録#ee218e931976
// ✅ OfTypeでNull排除+型絞り込み object[] mixed = { "alice", null, 42, "bob", null, "carol" }; var strings = mixed.OfType<string>().ToList(); // → ["alice", "bob", "carol"]
イディオム2: OfType<T>()でNull +型絞り込みを同時にやる
C# Linq で Null を回避する書き方とパフォーマンス(業務SEのコピペで動くやつ)未収録#14f9efe17681
// ✅ DefaultIfEmptyで空シーケンス時のフォールバック var prices = invoices .Where(i => i.Region == "東京") .Select(i => i.Amount) .DefaultIfEmpty(0)
イディオム3: DefaultIfEmpty()で空シーケンス時のフォールバック
C# Linq で Null を回避する書き方とパフォーマンス(業務SEのコピペで動くやつ)未収録#c690c2cc9141
// ✅ Field<T> + ??でNull補完 var names = dt.AsEnumerable() .Select(r => r.Field<string>("name")?? "(unknown)") .ToList();
イディオム4: ??演算子でField<T>()のNullを補完
C# Linq で Null を回避する書き方とパフォーマンス(業務SEのコピペで動くやつ)未収録#12c62cae638e
// ✅ ?.連鎖でNull中継 var firstItemName = order?.Items?.FirstOrDefault()?.Name ?? "(no item)"; // Linqとの組み合わせ var deliveredCount = orders
イディオム5: ?.連鎖でnull中継を許容する
C# Linq で Null を回避する書き方とパフォーマンス(業務SEのコピペで動くやつ)未収録#8f2d66c1e375
// ✅ 10万件のホットパスでLinq → forに書き換え // Linq版(800ms前後) var sumLinq = items .Where(i => i != null && i.Price > 0) .Sum(i => i.Price);
パフォーマンス: 10万件規模でLinq vs forループ
C# Linq で Null を回避する書き方とパフォーマンス(業務SEのコピペで動くやつ)未収録#0055f5f685f4
public class Employee { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; }
最短対処: コピペで動く3つの Select
C# LINQ Select の3パターン — 単純射影 / 匿名型整形 / インデックス付きの使い分け未収録#fa5486377d42
// List から名前だけ取り出す var names = employees.Select(e => e.Name).ToList(); // DataTable から型付きで1列取り出す(業務SE頻出) var ids = dt.AsEnumerable()
パターン①: 単純射影(1列だけ・型付きで取り出す)
C# LINQ Select の3パターン — 単純射影 / 匿名型整形 / インデックス付きの使い分け未収録#6364f5bd7109
var view = employees.Select(e => new { e.Id, 名前 = e.Name, 年齢 = e.Age
パターン②: 匿名型へ整形(複数列をまとめて画面/CSV用に)
C# LINQ Select の3パターン — 単純射影 / 匿名型整形 / インデックス付きの使い分け未収録#567ac35b66ff