Comparing unnamed data slots and ThreadLocal...
MSDN only says
In the .NET Framework 4, you can use the System.Threading.ThreadLocal class to create thread-local objects that are initialized lazily when the object is first consumed. For more information, see Lazy Initialization.
If I'm fine with lazy init, ThreadLocal seems like the best choice... it's simpler to use and doesn't require casting. Is there any other things to consider when choosing one over the other?