Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
788 views
in Technique[技术] by (71.8m points)

reflection - Does the typeof() operator in C# allocate a new Type object on the heap, or return an existing one?

Should be pretty self-explanatory, but this is in the context of real-time XNA code where I want to avoid allocations in order to avoid triggering GC. So I'm wondering if the managed Type objects associated with the types that have been loaded are always present in the runtime, or if typeof() actually constructs a new Type object (presumably from some unmanaged metadata in the runtime) on the heap, which will be garbage collected. Feel free to point out any ignorant assumptions/misconceptions revealed by even asking this question as well =)

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

From the C# 4 spec section 7.6.11:

There is only one System.Type object for any given type. This means that for a type T, typeof(T) == typeof(T) is always true.

(Additionally, if you get the type via reflection it will always fetch the same Type object too, but that's not in the spec.)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...