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

動くコード図鑑

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

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

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

この図鑑の使い方

言語で絞る

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

▶ で実行

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

記事と接続

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

絞り込み

snippet 一覧

619
C#
// ✅パターン1: is +パターンマッチ(C# 7以降の本命)
public void Process(object data)
{
    if (data is IDataLoader loader)
    {
▶ 実行可

パターン1: is +パターンマッチング(C# 7以降の本命)

C# Interface の継承判定と暗黙キャストの定石(is / as / 暗黙キャスト 3パターン)#159cd4da0496
C#
// ✅パターン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
C#
// ✅パターン3-a:暗黙キャスト(継承関係が静的型レベルで明確)
public class CsvLoader : IDataLoader { /* 実装 */ }

CsvLoader csvLoader = new CsvLoader();
IDataLoader loader = csvLoader;  // ✅暗黙キャストOK(CsvLoader → IDataLoader)

パターン3:暗黙キャストと直接キャスト(型が確定している時だけ)

C# Interface の継承判定と暗黙キャストの定石(is / as / 暗黙キャスト 3パターン)未収録#113b3d707a4c
C#
// ❌罠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
C#
// ❌罠2: GetType()でInterface判定はできない
if (obj.GetType()== typeof(IDataLoader))// ←常にfalse
{
    //ここには到達しない(常にfalse)
}

ハマりポイント— BoxingとGetType()誤用

C# Interface の継承判定と暗黙キャストの定石(is / as / 暗黙キャスト 3パターン)未収録#c0d195d72647
C#
namespace InterfaceExample
{
    public interface ISayHello
    {
        void Say();

まずはInterfaceを定義

【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!未収録#a3072e9f21f7
C#
using System;namespace InterfaceExample
{
    public class CSharpHello : ISayHello
    {
        public void Say()
▶ 実行可

Interfaceを継承したクラスを定義

【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!#9b430c6ee487
C#
using System;namespace InterfaceExample
{
    public class VBnetHello : ISayHello
    {
        public void Say()
▶ 実行可

Interfaceを継承したクラスを定義

【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!#950dfa8ee749
C#
namespace InterfaceExample
{
    class Program
    {
        static void Main(string[] args)

Interfaceの配列を定義

【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!未収録#25928746ad18
C#
    class Program
    {
        static void Main(string[] args)
        {
            var helloList = new ISayHello[]
▶ 実行可

配列をぶん回して実行

【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!#e9039e6a9d95
C#
using System;namespace InterfaceExample
{
    public class FreeHello : ISayHello
    {
        private string _helloItem;
▶ 実行可

自由にHelloというクラスを作ってみる

【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!#13efe9b65211
C#
namespace InterfaceExample
{
    class Program
    {
        static void Main(string[] args)
▶ 実行可

自由にHelloというクラスを作ってみる

【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!#12ac9226ce1e
C#
namespace InterfaceExample
{
    public interface IGetHello
    {
        string GetHello();

ISayHelloのInterfaceを引数に取る関数を作ってみる

【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!未収録#acaa8007a613
C#
namespace InterfaceExample
{
    public class CSharpHello : IGetHello
    {
        public string GetHello()

ISayHelloのInterfaceを引数に取る関数を作ってみる

【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!未収録#91fbdbdc763e
C#
namespace InterfaceExample
{
    public class VBnetHello : IGetHello
    {
        public string GetHello()

ISayHelloのInterfaceを引数に取る関数を作ってみる

【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!未収録#905dcaa482b2
C#
namespace InterfaceExample
{
    public class FreeHello : IGetHello
    {
        private string _helloItem;

ISayHelloのInterfaceを引数に取る関数を作ってみる

【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!未収録#6dbef8e0f7e9
C#
namespace InterfaceExample
{
    class Program
    {
        static void Main(string[] args)
▶ 実行可

ISayHelloのInterfaceを引数に取る関数を作ってみる

【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!#af07081ba3c2
C#
            var strs = new List<string>()
            {
                "山田",
                "鈴木",
                "小林",
▶ 実行可

普通にLinqを使う

C#でLinqを使って特定の条件に一致するものをカウントする。#a45a64bd8cc9
C#
        static bool IsContainYama(string str)
        {
            return str.Contains("山");
        }

Linqの中で関数を使う

C#でLinqを使って特定の条件に一致するものをカウントする。未収録#b20a1695e40b
C#
        static void Case2()
        {
            var strs = new List<string>()
            {
                "山田",
▶ 実行可

Linqの中で関数を使う

C#でLinqを使って特定の条件に一致するものをカウントする。#5c3cab99527f
C#
        static void Case3()
        {
            var strs = new List<string>()
            {
                "山田",
▶ 実行可

Linqに直接関数を投げる

C#でLinqを使って特定の条件に一致するものをカウントする。#e71c6fab9d33
C#
// ✅ 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
C#
// ✅ 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
C#
// ✅ DefaultIfEmptyで空シーケンス時のフォールバック
var prices = invoices
    .Where(i => i.Region == "東京")
    .Select(i => i.Amount)
    .DefaultIfEmpty(0)

イディオム3: DefaultIfEmpty()で空シーケンス時のフォールバック

C# Linq で Null を回避する書き方とパフォーマンス(業務SEのコピペで動くやつ)未収録#c690c2cc9141
C#
// ✅ Field<T> + ??でNull補完
var names = dt.AsEnumerable()
    .Select(r => r.Field<string>("name")?? "(unknown)")
    .ToList();

イディオム4: ??演算子でField<T>()のNullを補完

C# Linq で Null を回避する書き方とパフォーマンス(業務SEのコピペで動くやつ)未収録#12c62cae638e
C#
// ✅ ?.連鎖でNull中継
var firstItemName = order?.Items?.FirstOrDefault()?.Name ?? "(no item)";

// Linqとの組み合わせ
var deliveredCount = orders

イディオム5: ?.連鎖でnull中継を許容する

C# Linq で Null を回避する書き方とパフォーマンス(業務SEのコピペで動くやつ)未収録#8f2d66c1e375
C#
// ✅ 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
C#
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
C#
// List から名前だけ取り出す
var names = employees.Select(e => e.Name).ToList();

// DataTable から型付きで1列取り出す(業務SE頻出)
var ids = dt.AsEnumerable()

パターン①: 単純射影(1列だけ・型付きで取り出す)

C# LINQ Select の3パターン — 単純射影 / 匿名型整形 / インデックス付きの使い分け未収録#6364f5bd7109
C#
var view = employees.Select(e => new
{
    e.Id,
    名前 = e.Name,
    年齢 = e.Age

パターン②: 匿名型へ整形(複数列をまとめて画面/CSV用に)

C# LINQ Select の3パターン — 単純射影 / 匿名型整形 / インデックス付きの使い分け未収録#567ac35b66ff