Skip to Content
C# Cookbook
book

C# Cookbook

by Stephen Teilhet, Jay Hilyard
January 2004
Beginner to intermediate
864 pages
22h 18m
English
O'Reilly Media, Inc.
Content preview from C# Cookbook

9.14. Storing Snapshots of Lists in an Array

Problem

You have an ArrayList, Queue, or Stack object and you want to take a snapshot of its current state. (Note that this recipe also works for any other data type that implements the ICollection interface. )

Solution

Use the CopyTo method declared in the ICollection interface. The following method, TakeSnapshotOfList, accepts any type that implements the ICollection interface and takes a snapshot of the entire object’s contents. This snapshot is returned as an object array:

public static object[] TakeSnapshotOfList(ICollection theList)
{
    object[] snapshot = new object[theList.Count]; 
    theList.CopyTo(snapshot, 0);
    return (snapshot);
}

Discussion

The following method creates a Queue object, enqueues some data, and then takes a snapshot of it:

public static void TestListSnapshot( )
{
    Queue someQueue = new Queue( );
    someQueue.Enqueue(1);
    someQueue.Enqueue(2);
    someQueue.Enqueue(3);

    object[] queueSnapshot = TakeSnapshotOfList(someQueue);
}

The TakeSnapshotOfList is useful when you want to record the state of an object that implements the ICollection interface. This “snapshot” can be compared to the original list later on to determine what, if anything, has changed in the list. Multiple snapshots can be taken at various points in an applications run to show the state of the list or lists over time.

The TakeSnapshotOfList method could easily be used as a logging/debugging tool for developers. Take, for example, an ArrayList that is being corrupted ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

C# Cookbook

C# Cookbook

Joe Mayo
C# Cookbook, 2nd Edition

C# Cookbook, 2nd Edition

Jay Hilyard, Stephen Teilhet
ASP.NET Cookbook

ASP.NET Cookbook

Michael A Kittel, Geoffrey T. LeBlond

Publisher Resources

ISBN: 0596003390Supplemental ContentCatalog PageErrata