Create a gist now

Instantly share code, notes, and snippets.

@kou-yeung /Lazy.cs Secret
Last active Dec 2, 2016

.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
Owner
kou-yeung commented Dec 2, 2016 edited

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