It is best to avoid using value types in situations where they must be boxed a high number of times, for example in non-generic collections classes such as ArrayList. You can avoid boxing of value types by using generic collections such as List. Boxing and unboxing are computationally expensive processes. When a value type is boxed, an entirely new object must be created. This can take up to 20 times longer than a simple reference assignment. When unboxing, the casting process can take four times as long as an assignment. For more information, see Boxing and Unboxing.