我正在考虑在我的对象中存储Type
变量。但是,它们可能相当多,但不同类型的数量不是很多。我担心使用大量内存将Type
存储在所有这些对象中,而其中许多对象的类型可能相同。
每次查找某个内容的类型时都会创建Type
的新实例,其中包含t.GetType()
或typeof(T)
?还是它实际上是一样的?如果它是相同的,我不必担心记忆。
请注意,我考虑过泛型,在这种情况下不能替代。
答案 0 :(得分:12)
对于具有相同运行时类型的两个对象x和y,
Object.ReferenceEquals(x.GetType(),y.GetType())
返回true。
所以,是的。
答案 1 :(得分:3)
每种类型只有一个实例。如果您评估:
"hello".GetType() == typeof(String)
或
Object.ReferenceEquals("hello".GetType(), typeof(String))
您将获得值true
。
这也适用于泛型:
Dictionary<string, string> dict = new Dictionary<string, string>();
// same will have the value true
bool same = Object.ReferenceEquals(dict.GetType(), typeof(Dictionary<string, string>));