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

動くコード図鑑

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

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

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

この図鑑の使い方

言語で絞る

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

▶ で実行

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

記事と接続

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

絞り込み

snippet 一覧

473
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
C#
var rows = dt.AsEnumerable().Select(r => new
{
    Id = r.Field<int>("Id"),
    Name = r.Field<string>("Name"),
    Dept = r.Field<string>("Dept")

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

C# LINQ Select の3パターン — 単純射影 / 匿名型整形 / インデックス付きの使い分け未収録#a8c0879a3ee4
C#
var numbered = employees.Select((e, i) => new
{
    No = i + 1, // 1 始まりにしたいので +1
    名前 = e.Name
}).ToList();

パターン③: インデックス付き Select(行番号・連番を振る)

C# LINQ Select の3パターン — 単純射影 / 匿名型整形 / インデックス付きの使い分け未収録#9cf00057024d
C#
class Program
{
    static void Main()
    {
        var names = new[] { "佐藤", "鈴木", "高橋" };
▶ 実行可

ハマり①: Select は foreach するまで実行されない(遅延評価)

C# LINQ Select の3パターン — 単純射影 / 匿名型整形 / インデックス付きの使い分け#b2e4130e3fde
C#
class Dept { public string Name { get; set; } }
class Emp { public string Name { get; set; } public Dept Dept { get; set; } }

class Program
{
▶ 実行可

ハマり②: 射影の途中で null を踏んで NullReferenceException

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