Skip to content

Instantly share code, notes, and snippets.

@kou-yeung
Last active December 2, 2016 05:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kou-yeung/733479a9ee0609b918d2d7dd1b6a922e to your computer and use it in GitHub Desktop.
Save kou-yeung/733479a9ee0609b918d2d7dd1b6a922e to your computer and use it in GitHub Desktop.
.NET4.0に追加された Lazy<T> ( 遅延初期化 ) クラスをUnityで使いたいので適当に書いた。
namespace System.Ex
{
public class Lazy<T>
{
T value;
Func<T> valueFactory;
public Lazy() : this(() => default(T)) {}
public Lazy(Func<T> valueFactory)
{
this.valueFactory = valueFactory ?? (() => default(T));
}
public bool IsValueCreated { get { return valueFactory == null; } }
public T Value
{
get
{
if (!IsValueCreated)
{
value = valueFactory();
valueFactory = null;
}
return value;
}
}
public override string ToString()
{
if (!IsValueCreated) return "値は作成されていません";
return value.ToString();
}
}
}
@kou-yeung
Copy link
Author

kou-yeung commented Dec 2, 2016

string 型だと、パラメータ受け取らないコンストラクタがないため、
where T : new() を削除し、
上記修正とともに () => new T(); も () => default(T) にしました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment