I've been commenting on this post by Bernal Schooley on a method using structs to 'simplify' using ViewState. Bernal has had a couple of posts around ViewState and methods of making it's use simpler. I have to say the comments on the posts are more useful for me that the posts themselves (as is often the way...comments are still on the blog right ).
One problem I do have is advocating the use of structs for this stuff...now don't get me wrong, I am aware of some advantages around structs; which go away slightly when using Generics as the constant boxing/unboxing no longer happens...There does seem to be a lot of misunderstanding around structs though...they're not always faster!
Structs are stored on the stack rather than the heap, this makes accessing and using them faster (often dramatically faster!) . However you have to be aware of the limitations around structs...one biggie is that over 16 bytes you lost a lot of the advantage of this speedup - don't be storing a ton of data in a struct (well, not a ton...over 16 bytes!).
The other biggie is boxing structs...again in this case you've flipping them onto the heap rather than the stack...so you lose the 'stack' advantage again...
So, story is structs can be great but be careful with them...there's a newbie mistake in thinking that structs are these great, lightweight objects you can use however you want...they're not. Unless you can *really* justify using a struct, don't bother! In my entire .NET programming career I used structs maybe 5 times...and for very specific reasons!