请高手给小第把这段程序解释一下
private static readonly Hashtable objects = new Hashtable();
protected object CreateNewInstance()
{
ConstructorInfo ci = objects[this.GetType()] as ConstructorInfo;
if(ci == null)
{
ci = this.GetType().GetConstructor(new Type[0]);
objects[this.GetType()] = ci;
}
return ci.Invoke(null);
}