TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
Michael Williams
NA
3
0
C# Boxing Question
Jul 31 2007 9:46 AM
I have a question regarding boxing in c#. Currently, I have the need for a map like the following: Dictionary
Where field value looks something like this (i'm leaving out obvious code): struct FieldValue { public object DataValue {...} public UnitType Units{...} } It has come to my attention that the majority of values I will be storing in this map will be value types, and I will be performing quite a few adds per execution of this program, so I would like to avoid some of the boxing penalty of storing value types in the DataValue parameter of the above object. Initially I thought, since I know all values will be either a number, a string, or a list of either type, that I would simply create 4 different fields, one for each type and store an enumeration that indicated which field was being used. I don't really like this solution as it wastes a significant amount of memory if I'm storing a double with every object instance, even if I'm not using it. Another idea I had was to do something like the following (all value types will be stored in doubles): class DoubleReference { public double DoubleValue{...} } That way the DoubleReference object could be instantiated beforehand and I think, if I understand correctly how things work, that I would be able to avoid at least an unboxing operation by storing DoubleReference rather than a regular double in the map of generic object types. My question is, does doing this make any sense? Will it gain me anything at all, or am I wasting my time here? Thanks in advance for any help. Mike
Reply
Answers (
3
)
Affinity New Dual core PC
Inheriting IE skin into C# form