 <p>Note that everytime you pass a struct to a function as a parameter, or assign one variable to another, or in your case, add it to a list, a copy of the entire struct is created (in your case, 20 bytes will be copied).</p> <p>Also note that there are no GC references to structs expect (I think) in some circumstances.</p> <hr> <p>You will only get memory savings if you use a class instead of a struct - that way you can test for equality like you suggest.</p>