用泛型类实现缓存
在实现缓存的时候,我们很多时候采用的是 IDictionary < Tkey,TValue > 实现的,但是我们还可以采用一个更好的方式实现缓存,性能还比较好,物美价廉,泛型缓存。
我们首先写一个泛型类:
using System; using System.Collections.Generic; using System.Text; namespace ConsoleApp1 { public class GenericClass<T> { private static string GenericCache = null; static GenericClass() //静态类,在泛型类第一次传入具体的类型进来的时候,执行。 { GenericCache = $"{typeof(T).FullName}"; } public static string GetData() { return GenericCache; } } }
测试:
using System; using System.Collections.Generic; namespace ConsoleApp1 { class Program { static void Main(string[] args) { for (int i = 0; i < 5; i++) { Console.WriteLine($"begin--------{i}--------"); Console.WriteLine(typeof(GenericClass<int>)); //查看类型的名称 Console.WriteLine(typeof(GenericClass<string>)); //查看类型的名称 Console.WriteLine(typeof(GenericClass<DateTime>)); //查看类型的名称 Console.WriteLine(typeof(GenericClass<object>)); //查看类型的名称 Console.WriteLine($"end--------{i}--------"); Console.WriteLine($""); Console.WriteLine($""); Console.WriteLine($""); } Console.ReadLine(); } } }
运行结果:
根据结果得出:颜色相同的类型全是一样的。
在循环第一次时,已经为每种类型生成了副本,当第二次循环时,直接使用之前的对象。