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

動くコード図鑑

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

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

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

この図鑑の使い方

言語で絞る

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

▶ で実行

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

記事と接続

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

絞り込み

snippet 一覧

619
C#
namespace ConsoleApplication2
{
    class Program
    {

▶ 実行可

Func<>で同じことをやってみる。

C#のデリゲートまとめ!型とFuncとActionと!#48a78219b48c
C#
namespace ConsoleApplication2
{
    class Program
    {

▶ 実行可

Action<>で同じことをやってみる。

C#のデリゲートまとめ!型とFuncとActionと!#822e883e6ddf
C#
    public class Todo
    {
        public int Id { get; set; }
        public string Sammary { get; set; }
        public string Detail { get; set; }

TodoMODELの構造

ASP.NETでDetails時にログイン中ユーザーのデータのみ出力する方法未収録#88121ca71021
C#
    public class User
    {
        public int id { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }

UserModelの構造

ASP.NETでDetails時にログイン中ユーザーのデータのみ出力する方法未収録#e56e61c0cb1b
C#
        // GET: Todoes/Details/5
        public ActionResult Details(int? id)
        {
            if (id == null)
            {

Detailsでログイン中ユーザーの情報を取ってみる!

ASP.NETでDetails時にログイン中ユーザーのデータのみ出力する方法未収録#37656672c676
C#
        private User GetLoginUser()
        {
            return db.Users.FirstOrDefault(u => u.UserName == User.Identity.Name);
        }

Detailsでログイン中ユーザーの情報を取ってみる!

ASP.NETでDetails時にログイン中ユーザーのデータのみ出力する方法未収録#52ae7c289ba8
C#
    public class Todo
    {
        public int Id { get; set; }
        public string Sammary { get; set; }
        public string Detail { get; set; }

TodoMODELの構造

【ASP.NET&C#】でログイン中ユーザーの情報のみやり取りする方法未収録#94bb3c19e04e
C#
    public class User
    {
        public int id { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }

UserModelの構造

【ASP.NET&C#】でログイン中ユーザーの情報のみやり取りする方法未収録#42f3bffa5f4c
C#
    public class TodoesController : Controller
    {
        private AspStudyContext db = new AspStudyContext();

        // GET: Todoes

TodoのController

【ASP.NET&C#】でログイン中ユーザーの情報のみやり取りする方法未収録#9b037cfc6f46
C#
        static void Main(string[] args)
        {
            var items = new int[]{1,2,3,5,8,9,7,10,66,78,99,100};
        }

static void Main(string[] args)

C#でLinqの結果でNull回避したい場合の処理!未収録#f382a67110db
C#
            var items = new int[]{1,2,3,5,8,9,7,10,66,78,99,100};

            var extractionItems = items.Where(item => item % 3 == 0);

            foreach (var item in extractionItems)
▶ 実行可

var items = new int[]{1,2,3,5,8,9,7,10,66,78,99,100};

C#でLinqの結果でNull回避したい場合の処理!#9f085fe201b0
C#
        static void Main(string[] args)
        {
            var items = new int[]{1,2,3,5,8,9,7,10,66,78,99,100};

            var extractionItems = items.Where(item => item % 10000 == 0);
▶ 実行可

static void Main(string[] args)

C#でLinqの結果でNull回避したい場合の処理!#9e298d8db799
C#
        static void Main(string[] args)
        {
            var items = new int[]{1,2,3,5,8,9,7,10,66,78,99,100};

            var extractionItems = items.Where(item => item % 10000 == 0);
▶ 実行可

static void Main(string[] args)

C#でLinqの結果でNull回避したい場合の処理!#0e707259adbd
C#
    class Program
    {
        static void Main(string[] args)
        {
            var items = new int[]{1,2,3,5,8,9,7,10,66,78,99,100};
▶ 実行可

C#でLinqを使って結果Nullを回避する。

C#でLinqの結果でNull回避したい場合の処理!#2920c9484983
C#
try{

this.UseWaitCursor = true;
// 時間のかかるイベント。非同期実装
MessageBox.Show("処理が終わりました。")

try{

C#のWinformsでuseWaitCursorが戻らないバグ未収録#8984159e60f0
C#
        private string GetWaitCursorStatus(Control control)
        {
            var str = $@"{control.Name} : {control.UseWaitCursor.ToString()}";

        foreach (Control c in control.Controls)

Cursorに関係するプロパティ

C#のWinformsでuseWaitCursorが戻らないバグ未収録#88d310bbe912
C#
try{

this.UseWaitCursor = true;
// 時間のかかるイベント。非同期実装
MessageBox.Show("処理が終わりました。")

Cursorに関係するプロパティ

C#のWinformsでuseWaitCursorが戻らないバグ未収録#382d8d2f7c55
C#
namespace CallBackNDelegate
{
    class Program
    {
        static void Main(string[] args)
▶ 実行可

C#でのコールバックとは何?

C#のコールバックとデリゲートの違いはなんなのか!#b27a099f25d2
C#
    class Program
    {
        static void Main(string[] args)
        {
            Say2(GetHello);
▶ 実行可

C#でのコールバックとは何?

C#のコールバックとデリゲートの違いはなんなのか!#9ce9d42aea40
C#
    public static class Delegate
    {
        public delegate string GetHelloDelegate(string str);    public delegate void SayHelloDelegate();

    public static void Say()
▶ 実行可

C#でのデリゲートとは?

C#のコールバックとデリゲートの違いはなんなのか!#bf1bdb003cf1
C#
//抽象的なコールバックの構造
//「呼ぶ側」が「呼ばれる側」に処理を渡しておく
void DoSomething(コールバック型callback)
{
    // ...何か仕事をする...

コールバックは「概念」、C#以前から存在する

C# のコールバック・デリゲート・イベントの違いを業務SEが30分で腹落ちさせる未収録#c51e4f151e8e
C#
//メソッドのシグネチャを型として宣言
public delegate bool ValidationFunc(string input);

public class Validator
{

①自前delegate宣言

C# のコールバック・デリゲート・イベントの違いを業務SEが30分で腹落ちさせる未収録#3e9360c3bce4
C#
// Action:戻り値なし
Action<int> log = n => Console.WriteLine($"value={n}");
log(42);

// Func:戻り値あり(最後の型引数が戻り値)
▶ 実行可

② Action / Func(標準ジェネリックデリゲート)

C# のコールバック・デリゲート・イベントの違いを業務SEが30分で腹落ちさせる#be40399f77a4
C#
// 1行ラムダ
Func<int, int> square = x => x * x;

//複数行ラムダ
Action<List<string>> print = list =>
▶ 実行可

③ラムダ式・匿名メソッド

C# のコールバック・デリゲート・イベントの違いを業務SEが30分で腹落ちさせる#c9dabbaae3dc
C#
//イベントを生やすクラス側
public class FileWatcher
{
    public event Action<string> FileChanged;   // ←デリゲート型+ eventキーワード

▶ 実行可

+= / -=の正体

C# のコールバック・デリゲート・イベントの違いを業務SEが30分で腹落ちさせる#b5d4dfa3116b
C#
//標準形
public event EventHandler<MyEventArgs> ItemSelected;

//発火
ItemSelected?.Invoke(this, new MyEventArgs(selectedId));
▶ 実行可

EventHandler系の慣習

C# のコールバック・デリゲート・イベントの違いを業務SEが30分で腹落ちさせる#3707bc4ea319
C#
var actives = users
    .Where(u => u.IsActive)// Func<User, bool>
    .Select(u => new { u.Id, u.Name })// Func<User, anonymous>
    .OrderBy(u => u.Name)// Func<anonymous, string>
    .ToList();

LINQのFunc<T,bool>も同じ仕組み

C# のコールバック・デリゲート・イベントの違いを業務SEが30分で腹落ちさせる未収録#24bf8006ce09
C#
// ❌ NG: ChildFormを閉じた後も購読が残ってChildFormがGCされない
appWideManager.DataUpdated += childForm.OnDataUpdated;

// ✅ OK: ChildFormが閉じる時に解除する
childForm.FormClosed += (_, __)=>

①イベント解除忘れでメモリリーク

C# のコールバック・デリゲート・イベントの違いを業務SEが30分で腹落ちさせる未収録#42377c32e3e0
C#
// ❌ NG:ラムダで登録すると、解除しようとしても同じ参照が作れない
manager.DataUpdated += data => this.Process(data);
// ↓これだと別のラムダ→解除できない
manager.DataUpdated -= data => this.Process(data);

②ラムダでthisを意図せずキャプチャ

C# のコールバック・デリゲート・イベントの違いを業務SEが30分で腹落ちさせる未収録#d9122f66523e
C#
manager.DataUpdated -= someHandler;
// ↑ someHandlerが登録されてなくても何も言わない
//多重登録されてた場合も「1個だけ」外す挙動なので、登録回数と解除回数を揃える必要がある

③ -=が効いてないのに気付かない

C# のコールバック・デリゲート・イベントの違いを業務SEが30分で腹落ちさせる未収録#4f9681d586f0