Lazyの基本的な動き

今更ながらLazy<T>がどう動くのかミニマムコードを作って確認してみました。

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
  class MyClass
  {
    public MyClass()
    {
      Console.WriteLine("Initialize");
    }

    public void Do()
    {
      Console.WriteLine("Do");
    }
  }

  class Program
  {
    static void Main(string[] args)
    {
      var lazy = new Lazy<MyClass>();

      Console.WriteLine("Get Instance");

      var instance = lazy.Value;

      Console.WriteLine("Method Invoke");

      instance.Do();

      // Result:
      //   Get Instance
      //   Initialize
      //   Method Invoke
      //   Do
    }
  }
}

 

Lazy.Valueプロパティが参照されたときに、型引数Tのコンストラクタが動く、と。

当たり前といえば当たり前の挙動を確認しただけでした。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中