public T TakeOut()
{
	if(num>0)
	{
		return array[--num];
	}
	else
	{
		Console.WriteLine("cage is empty");
		return default(T);
	}
}返回T的默认类型,这里T是引用类型(类),则返回默认值null。
详情参见:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/statements-expressions-operators/default-value-expressions
就你贴的这段代码而言,直接无法运行