§3.7
Exception types 39
3.7 Exception types
3.7.1 General exceptions used by C5
 A System.ArgumentException is thrown when the argument to an operation
does not satisfy its preconditions. For instance, it is thrown if the enumerable
xs
passed in
AddSorted(xs)
does not produce items in strictly increasing order.
 A System.ArgumentOutOfRangeException is thrown by subrange (view) oper-
ations if the given index and length arguments are illegal for the collection.
 A System.IndexOutOfRangeException is thrown by indexers
this[i]
and in-
dexing operations such as
Insert(i, x)
when integer
i
is outside the range
of legal indexes for the operation. An indexer that does not in general take
integer arguments throws other exceptions:
this[k]
on a dictionary throws
NoSuchItemException when key
k
is not in the dictionary, and
this[h]
on a
priority queue throws InvalidHandleException when handle
h
is not associ-
ated with the priority queue.
3.7.2 Exception types particular to C5
The C5 collection library uses several exception classes to provide more specic in-
formation about operations that went wrong. All derive from System.Exception, and
the general rules for throwing them are these:
 A CollectionModiedException is thrown if the collection underlying an enu-
merator has been modied while the enumerator is in use. The exception is
thrown at the rst use of the enumerator (fail-early) after a modication.
 ADuplicateNotAllowedException is thrown when one attempts to addan item
x
to a collection that already contains an item equal to
x
,and that collection
does not allow duplicates. Whether a collection allows duplicates can be deter-
mined by inspecting the collection’s
AllowsDuplicates
property; seesection 4.5.
 A FixedSizeCollectionException is thrown when an attempt is made to extend
(for instance, by
Add
)or shrink (for instance, by
Remove
)a xed-size list: one
for which the
IsFixedSize
property is true.
 An IncompatibleViewException is thrown when alist operation such as
u.Insert(w,
x)
or
u.Span(w)
is applied to a list view
w
(section 8.1) that has a different un-
derlying list than that of
u
.
 An InternalException is thrown in theunlikely event ofan inconsistency in the
C5 library’s internal data structures. The library developers (kokholm@itu.dk
and sestoft@itu.dk) would very much appreciate being notied of such prob-
lems, preferably with example code that provokes the problem.
Pdf to tiff file converter - SDK software API:C# PDF Convert to Tiff SDK: Convert PDF to tiff images in C#.net, ASP.NET MVC, Ajax, WinForms, WPF
Online C# Tutorial for How to Convert PDF File to Tiff Image File
www.rasteredge.com
Pdf to tiff file converter - SDK software API:VB.NET PDF Convert to Tiff SDK: Convert PDF to tiff images in vb.net, ASP.NET MVC, Ajax, WinForms, WPF
Free VB.NET Guide to Render and Convert PDF Document to TIFF
www.rasteredge.com
40 Exception types
§3.7
 An IntervalHeap.InvalidHandleException is thrown when one attempts touse
a priority queue handle (sections 4.10 and 9.20) in an indexer or
Delete
or
Replace
operation on a priority queue, and the handle is not currently associ-
ated with this priority queue, or when one attempts to set (re-use) an existing
handle in an
Add
operation and the handle is already in use.
 A NoSuchItemException is thrown when no item can be returned from an op-
eration, such as when
Choose()
is applied to an empty collection, or
First
or
Last
are applied to an empty list, or
Predecessor
is applied to a value less than
or equal to all items in a sorted collection, or a dictionary indexer is used to
look up a key that is not in the collection.
 A NotComparableException is thrown when an attempt is made to construct a
NaturalComparer<T> or NaturalComparerO<T> (section 2.6) for atype Tthat
does not implement System.IComparable<T> or System.IComparable. This
typically happens when one creates a comparer-basedcollection without giving
an explicit comparer.
 ANotAViewException is thrown when aviewoperation such as
Slide
or
TrySlide
is applied to a proper list, not a list view (sections 4.8 and 8.1). One can deter-
mine whether
list
is a view by evaluating
list.Underlying != null
.
 A ReadOnlyCollectionException is thrown if any modication is attempted on
acollection that is read-only, such as a guarded collection or a snapshot of a
tree set or tree bag. One can determine whether a collection is read-only by
inspecting its
IsReadOnly
property; see section 4.5.
 An UnlistenableEventException is thrown if an attempt is made to attach an
event handler to a collection that does not support that event type. Whether
acollection supports a given event type can be determined by inspecting the
collection’s
ListenableEvents
property; see section 4.2.
 A ViewDisposedException is thrown if an operation other than
IsValid
or
Dispose
is called on a list view that has been invalidated. One can deter-
mine whether a viewhas been disposed by inspecting its
IsValid
property; see
section 4.8.
SDK software API:Online Convert PDF file to Tiff. Best free online PDF Tif
Online PDF to Tiff Converter. Download Free Trial. Convert a PDF File to Tiff. Just upload your file by clicking on the blue button
www.rasteredge.com
SDK software API:C#: How to Use SDK to Convert Document and Image Using XDoc.
Sample Code. Here's a snippet of sample code for converting Tiff to PDF file using XDoc.Converter for .NET in C# .NET program. Six
www.rasteredge.com
§3.9
Pseudo-random number generators 41
3.8 Pseudo-random number generators
Adeck of 52 cards can be shufed (permuted) in
52!
8
:
1
10
67
different ways, but a
pseudo-random number generator with a 32 bit seed can generate only
2
32
4
10
9
of these permutations. Proper shufing or permutation requires very large seeds
and very long periods.
The C5 library provides a pseudo-random number generator in class C5Random
which is a subclass ofSystem.Random. The C5Random class provides an implemen-
tation of George Marsaglia’s complimentary multiply with carry (CMC) pseudo-
random number generator which has an extremely long period [19, 20]. The im-
plementation in C5 accepts a seed consisting of 16 unsigned 32-bit integers, which
gives a period of
2
16
32
=
2
512
1
:
3
10
154
. Marsaglia’s paper [20] includes advice on
how to obtain multiple seed values for pseudo-random number generators such as
C5Random.
The C5Random class provides the following methods:
int
Next
()
returns a pseudo-random integer.
int
Next
(int max)
returns a pseudo-random integer in the range
0 ...max-1
.
Throws ArgumentException if
max < 0
.
int
Next
(int min, int max)
returns a pseudo-random integer in the range
min ...max-1
.Throws ArgumentException if
max <= min
.
void
NextBytes
(byte[] arr)
lls array
a
with pseudo-random bytes. Throws
NullReferenceException if
arr
is
null
.
double
NextDouble
()
returns apseudo-randomoating-point number greater
than or equal to 0 and less than 1.
3.9 The IShowable interface
The collection and dictionary classes implement the IShowable interface to permit
output-limited formatting of collections and dictionaries. Interface IShowable de-
rives from the System.IFormattable interface. See also section 8.7.
Methods
bool
Show
(StringBuilder sb, ref int rest, IFormatProvider formatProvider)
appends aformatted version of the given collection to
sb
,using at most approx-
imately
rest
characters, and using the
formatProvider
if non-
null
to format
collection items. If the collection cannot not be formatted within
rest
char-
acters, then ellipses 
...
are used to indicate missing pieces in the resulting
output. Subtracts the number of characters actually used from
rest
.Returns
true if
rest > 0
on return; otherwise false.
SDK software API:C# PDF Convert: How to Convert Tiff Image to PDF File
from MS Office Excel, Word, and PPT, our .NET document converter SDK is also capable of transforming and converting Tiff image file to PDF file in C#
www.rasteredge.com
SDK software API:XDoc.Converter for .NET, Support Documents and Images Conversion
converter SDK supports various commonly used document and image file formats, including Microsoft Office (2003 and 2007) Word, Excel, PowerPoint, PDF, Tiff,
www.rasteredge.com
42 The IShowable interface
§3.9
SDK software API:C# Create PDF from Tiff Library to convert tif images to PDF in C#
Support to combine multiple page tiffs into one PDF file. Support SharePoint. Selection of turning tiff into searchable PDF or scanned PDF. Online
www.rasteredge.com
SDK software API:C# PDF File Split Library: Split, seperate PDF into multiple files
Application. Best and professional adobe PDF file splitting SDK for Visual Studio .NET. outputOps); Divide PDF File into Two Using C#.
www.rasteredge.com
Chapter 4
Collection interface details
This chapter gives a detailed description of the collection interfaces shown in g-
ure 4.1. Since all important functionality of the collection implementation classes
is described by the interfaces, this is the main documentation of the entire library
(also available online as HTML help les).
The interfaces are presented in alphabetical order in sections 4.1 to 4.14.
The dictionary interfaces are presented separately in chapter 5.
ISequenced<T>
ICollection<T>
IExtensible<T>
ICollectionValue<T>
SCG.IEnumerable<T>
IIndexed<T>
IPersistentSorted<T>
IPriorityQueue<T>
IList<T>
IQueue<T>
IStack<T>
SC.IList
SCG.ICollection<T>
IDirectedCollectionValue<T>
IDirectedEnumerable<T>
SCG.IList<T>
IIndexedSorted<T>
ISorted<T>
ICloneable
IShowable
Figure 4.1: The collection interface hierarchy (same as gure 1.1). See gure 6.2 for
the classes implementing these interfaces. SGC is the System.Collections.Generic
namespace.
43
SDK software API:VB.NET PDF File Split Library: Split, seperate PDF into multiple
Professional VB.NET PDF file splitting SDK for Visual Studio and .NET framework 2.0. Split PDF file into two or multiple files in ASP.NET webpage online.
www.rasteredge.com
SDK software API:RasterEdge XDoc.Tiff for .NET - SDK for Tiff Document Imaging
Convert Word, Excel, PowerPoint to Tiff. Convert PDF to Tiff. Convert Jpeg Images to Tiff. Tiff File Process. Create, Load, and Save Tiff File.
www.rasteredge.com
44 Interface ICollection<T>
§4.1
4.1 Interface ICollection<T>
Inherits from: IExtensible<T>, System.Collections.Generic.ICollection<T>.
Implemented by: ArrayList<T> (section 6.2), HashBag<T> (section 6.11), Hash-
Set<T> (section 6.10), HashedArrayList<T> (section 6.4), HashedLinkedList<T>
(section 6.5), LinkedList<T>(section 6.3), SortedArray<T> (section 6.7),TreeBag<T>
(section 6.9), TreeSet<T> (section 6.8), and WrappedArray<T> (section 6.6).
Properties
 Read-only property
EventTypeEnum
ActiveEvents
,see page 49.
 Read-only property
bool
AllowsDuplicates
,see page 55.
 Read-only property
Speed
ContainsSpeed
is the guaranteed run-time of the
Contains
method; see section 3.3.
 Read-only property
int
Count
,see page 49.
 Read-only property
Speed
CountSpeed
,see page 49.
 Read-only property
bool
DuplicatesByCounting
,see page 55.
 Read-only property
SCG.IEqualityComparer<T>
EqualityComparer
,seepage 55.
 Read-only property
bool
IsEmpty
,see page 49.
 Read-only property
bool
IsReadOnly
,see page 55.
 Read-only property
EventTypeEnum
ListenableEvents
,see page 49.
Methods
bool
Add
(T x)
,see page 55.
void
SCG.ICollection<T>.Add
(T x)
calls
Add(x)
,see page 55, and ignores
the return value.
void
AddAll
<U>(SCG.IEnumerable<U> xs) where U:T
,see page 56.
bool
All
(Fun<T,bool> p)
,see page 49.
void
Apply
(Act<T> act)
,see page 49.
bool
Check
()
,see page 56.
T
Choose
()
,see page 50.
§4.1
Interface ICollection<T> 45
void
Clear
()
removes all items from the collection. Raises events Collection-
Cleared and CollectionChanged. Throws ReadOnlyCollectionException if the
collection is read-only.
Object
Clone
()
,see page 56.
bool
Contains
(T x)
returns true if the collection contains an item equal to
x
.
bool
ContainsAll
<U>(SCG.IEnumerable<U> xs) where U:T
returns trueifthe
collection contains (items equal to) all the items in
xs
.For collections with bag
semantics, item multiplicity is taken into account: each item
x
must appear in
the collection at least as many times as in
xs
.The method is generic so that it
can be applied to enumerables with any item type U that is a subtype of T; see
section 8.4.
int
ContainsCount
(T x)
returns the number of occurrences of
x
in the col-
lection;
Contains(x)
is equivalent to, but faster than,
ContainsCount(x)>0
.
void
CopyTo
(T[] arr, int i)
,see page 50.
bool
Exists
(Fun<T,bool> p)
,see page 50.
SCG.IEnumerable<T>
Filter
(Fun<T,bool> p)
,see page 50.
bool
Find
(Fun<T,bool> p, out T res)
,see page 50.
bool
Find
(ref T x)
returns true if the collection contains an item equal to
x
,
and in that case binds one such item to the ref parameter
x
;otherwise returns
false and leaves
x
unmodied.
bool
FindOrAdd
(ref T x)
returns trueif thecollection contains anitem equal
to
x
,and in that case binds one such item to the ref parameter
x
;otherwise re-
turns false and adds
x
to the collection. If the item was added, it raises events
ItemsAdded and CollectionChanged. Throws ReadOnlyCollectionException if
the collection is read-only.
int
GetUnsequencedHashCode
()
returns the unsequenced or order-insensi-
tive hash code of the collection. This is the sum of a transformation of the
hash codes of its items, each computed using the collection’s item equality
comparer. The collection’s hash code is cached and thus not recomputed unless
the collection has changed since the last call to this method.
ICollectionValue<KeyValuePair<T,int>>
ItemMultiplicities
()
returns a
new collection value whoseitems arepairs (
x
,
n
)where
x
is an item in the given
collection and
n
is the multiplicity of
x
in the collection: the number of times
x
appears. For collections with set semantics,
n=1
always, and for collections
with bag semantics,
n >= 1
always.
46 Interface ICollection<T>
§4.1
bool
Remove
(T x)
attempts to remove an item equal to
x
from the collection.
If the collection has bag semantics, this means reducing the multiplicity of
x
by
one. Returns true if the collection did contain an item equal to
x
,false if it did
not. If an item was removed, it raises events ItemsRemoved and Collection-
Changed. Throws ReadOnlyCollectionException if the collection is read-only.
bool
Remove
(T x, out T xRemoved)
attempts to remove an item equal to
x
from the collection. If the collection has bag semantics, this means reducing
the multiplicity of
x
by one. Returns true if the collection did contain an item
equal to
x
and if so it binds one such item to
xRemoved
;returns false if it did
not. If an item was removed, it raises events ItemsRemoved and Collection-
Changed. Throws ReadOnlyCollectionException if the collection is read-only.
void
RemoveAll
<U>(SCG.IEnumerable<U> xs) where U:T
attempts to remove
(items equal to) all items in
xs
from the collection. If the collection has bag
semantics, this means reducing the item multiplicity of
x
in the collection by
at most the multiplicity of
x
in
xs
. If any items were removed, then events
ItemsRemoved and CollectionChanged are raised. Throws ReadOnlyCollec-
tionException if the collection is read-only. The method is generic so that it
can be applied to enumerables with any item type U that is a subtype ofT; see
section 8.4.
void
RemoveAllCopies
(T x)
attempts to remove all copies of items equal to
x
from the collection, reducing the multiplicity of
x
to zero. It has no effect
if the collection does not contain an item equal to
x
. If any items were re-
moved, then events ItemsRemoved and CollectionChanged are raised. Throws
ReadOnlyCollectionException if the collection is read-only.
void
RetainAll
<U>(SCG.IEnumerable<T> xs) where U:T
retains every item
that is equal to some item in
xs
.Equivalently, removes from the collection any
item
y
not equal tosome itemfrom
xs
.If the collection has bag semantics, then
this reduces the multiplicity of each item
x
in the collection to the minimum
of its multiplicity in the given collection and in
xs
.If any items were removed,
then events ItemsRemoved and CollectionChanged are raised. Throws Read-
OnlyCollectionException if the collection is read-only. The method is generic
so that it can be applied to enumerables with any item type U that is asubtype
of T; see section 8.4.
T[]
ToArray
()
,see page 50.
ICollectionValue<T>
UniqueItems
()
returns a collection value which is the
given collection with duplicate items removed. If the given collection allows
duplicates, anew collection is created and returned; if not, the given collection
is returned. The items of the returned collection are the key components ofthe
collection returned by method
ItemMultiplicities
.
bool
UnsequencedEquals
(ICollection<T> coll)
returns true if this collec-
tion contains the same items as
coll
with the same multiplicities, but possibly
§4.1
Interface ICollection<T> 47
in a different order. More precisely, for each item in this collection there must
be one equal to it in
coll
with the same multiplicity, and vice versa.
bool
Update
(T x)
returns true if the collection contains an item equal to
x
,
in which case that item is replaced by
x
;otherwise returns false without mod-
ifying the collection. If any item was updated, and the collection has set se-
mantics or
DuplicatesByCounting
is false, then only one copy of
x
is updated;
but if the collection has bag semantics and
DuplicatesByCounting
is true, then
all copies of the old item are updated. If any item was updated, then events
ItemsRemoved, ItemsAdded and CollectionChanged are raised. Throws Read-
OnlyCollectionException if the collection is read-only.
bool
Update
(T x, out T xOld)
returns true if the collection contains an item
equal to
x
,in which case that item is replaced by
x
and the olditem is bound to
xOld
;otherwise returns false and binds the default value for T to
xOld
without
modifying the collection. The collection is updated and events raised as for
Update(T)
.Throws ReadOnlyCollectionException if the collection is read-only.
bool
UpdateOrAdd
(T x)
returns true and updates the collection if the collec-
tion contains an item equal to
x
;otherwise returns false and adds
x
to the col-
lection. In the rst case (return value is true), if the collection has set seman-
tics or
DuplicatesByCounting
is false, then one copy of the old item is updated;
but if the collection has bag semantics and
DuplicatesByCounting
is true, then
all copies oftheolditem are updated. Also, events ItemsRemoved, ItemsAdded
and CollectionChanged are raised. In the second case (return value is false),
x
is added to the collection and events ItemsAdded and CollectionChanged are
raised. Throws ReadOnlyCollectionException if the collection is read-only.
bool
UpdateOrAdd
(T x, out T xOld)
returns true if the collection contains
an item equal to
x
,in which case that item is replaced by
x
and the old item is
bound to
xOld
;otherwise returns false, adds
x
to the collection, and binds the
default value for T to
xOld
.The collection is updated and events are raised as
for
UpdateOrAdd(T)
. Throws ReadOnlyCollectionException if the collection is
read-only.
Events
event CollectionChangedHandler<T>
CollectionChanged
,see page 51.
Raised by
Add
,
AddAll
,
Clear
,
FindOrAdd
,
Remove
,
RemoveAll
,
RemoveAllCopies
,
RetainAll
,
Update
and
UpdateOrAdd
.
event CollectionClearedHandler<T>
CollectionCleared
,see page 51.
Raised by
Clear
.
event ItemInsertedHandler<T>
ItemInserted
,see page 51.
event ItemRemovedAtHandler<T>
ItemRemovedAt
,see page 51.
48 Interface ICollection<T>
§4.1
event ItemsAddedHandler<T>
ItemsAdded
,see page 51.
Raised by
Add
,
AddAll
,
FindOrAdd
,
Update
and
UpdateOrAdd
.
event ItemsRemovedHandler<T>
ItemsRemoved
,see page51. Raisedby
Remove
,
RemoveAll
,
RemoveAllCopies
,
RetainAll
,
Update
and
UpdateOrAdd
.
Documents you may be interested
Documents you may be interested