Wouldn't it be cool if you could use transactions to roll back changes you've made to standard data structures like lists and arrays?  You can!  In the December 2005 issue of MSDN Magazine, Juval Lowy has a terrific article on implementing volatile resource managers for the .NET Framework 2.0: Can't Commit? Volatile Resource Managers in .NET Bring Transactions to the Common Type. He implements a generic class Transactional<T> that allows any type to participate in transaction scopes.  He takes this even further and implements classes like TransactionalList<T> (that implements IList<T>) and TransactionalArray<T>.  Very cool stuff that you can use today in your applications.