Expression<Func<T>>
またはFunc<T>
を辞書のキーとして使用できますか?例えば、重い計算の結果をキャッシュする。C#:式や関数を辞書のキーとして使用できますか?
例えば、鉱山のdifferent questionビットからの私の非常に基本的なキャッシュ変更:
public static class Cache<T>
{
// Alternatively using Expression<Func<T>> instead
private static Dictionary<Func<T>, T> cache;
static Cache()
{
cache = new Dictionary<Func<T>, T>();
}
public static T GetResult(Func<T> f)
{
if (cache.ContainsKey(f))
return cache[f];
return cache[f] = f();
}
}
することは、これはも動作しませんか?
編集:クイックテストの後、実際に動作するようです。しかし、私は、うーん...今...それはしかし起こらないようにそれを変更する方法がわからないの戻り値の型ごとにキャッシュされるので、それはおそらく、より一般的なことができることを発見し
編集2 : Noo、待って...それは実際にはありません。通常の方法ではそうです。しかし、ラムダのためではない。彼らは同じように見えても、さまざまなランダムメソッド名を取得します。まあC」、)
なぜあなたはそれをやっていますか? –
私はそうではありません。私はちょうど私の他の質問のキャッシュのものを把握し、好奇心を得ている間、思考を偶然見つけた:) – Svish
調査の好奇心のためのボーナスポイントが、私は本当に技術のための実際のアプリケーションを参照することはできません。一方、このアイデアは、効果があったら、高いクールファクターを持っています。 –