t.GetType()是否返回相同的Type实例?

时间:2014-03-25 12:59:49

标签: c# types

我正在考虑在我的对象中存储Type变量。但是,它们可能相当多,但不同类型的数量不是很多。我担心使用大量内存将Type存储在所有这些对象中,而其中许多对象的类型可能相同。

每次查找某个内容的类型时都会创建Type的新实例,其中包含t.GetType()typeof(T)?还是它实际上是一样的?如果它是相同的,我不必担心记忆。

请注意,我考虑过泛型,在这种情况下不能替代。

2 个答案:

答案 0 :(得分:12)

MSDN: Object.GetType Method

  

对于具有相同运行时类型的两个对象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>));