how to generate pdf in mvc 4 : Convert pdf file to tiff file control application platform web page azure winforms web browser ITU-TR-2006-763-part1127

§2.4
Creating equality comparers 29
When creating a hash-based collection of collections, an equality comparer for the
outer collection’s items (which are themselves inner collections) should be cre-
ated and given explicitly; see sections 8.3 and 9.17.
The equality comparer classes listed in gure 2.2 dene item equality and item
hash functions that satisfy the requirements on
Equals(T,T)
and
GetHashCode(T)
mentioned above, and behave as follows:
 For primitive itemtypes,theequality comparerclasses CharEqualityComparer,
IntEqualityComparer and so on dene equality as the built-in equality for
those types, with corresponding hash functions.
 For an item typeT that implements ISequenced<W>,soeach outer itemis ase-
quenced collection of inner items of type W, the default equality comparer is a
SequencedCollectionEqualityComparer<T,W>. This equality comparer imple-
ments interface IEqualityComparer<T> and denes the equality
Equals(T,T)
of two collections by comparing their items of type W, using the
Equals(W,W)
method of their equality comparers, in the order in which they appear in the
collections. Correspondingly, it denes the hash function
GetHashCode(T)
for
acollection using the
GetHashCode(W)
method of their equality comparers in a
way that depends on the order in which the items appear.
 For an item type T that implements ICollection<W>, so each outer item is
an unsequenced collection of inner items of type W, the default equality com-
parer is an UnsequencedCollectionEqualityComparer<T,W>. This equality
comparer implements interface SCG.IEqualityComparer<T> and denes the
equality
Equals(T,T)
of two collections by comparing their items using the
Equals(W,W)
method of their equality comparers, disregarding the order in
which the items appear. Correspondingly, it denes the
GetHashCode(T)
hash
function of a collection using the
GetHashCode(W)
method of its item equality
comparer in a way that does not depend on the order in which the items ap-
pear.
 For an item type T that implements IEquatable<T>, the default equality com-
parer is an EquatableEqualityComparer<T>, which uses T’s method
Equals(T)
to dene equality and uses T’s
GetHashCode()
as hash function.
 For any other item type T, the default equality comparer is a NaturalEquali-
tyComparer<T>, which uses T’s method
Equals(Object)
to dene equality and
uses T’s
GetHashCode()
method compute hash codes.
If T is a value type, these methods may have been overridden in type T or else
are the default methods inherited from System.ValueType. In the latter case,
the
Equals(Object)
method uses reection to compare the elds of the value
for equality, and the
GetHashCode()
method similarly uses one or more elds
of the value type to compute a hash value. For efciency and correctness it is
advisable to override
Equals(Object)
and
GetHashCode()
in a value type T.
Convert pdf file to tiff file - control application platform: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
Convert pdf file to tiff file - control application platform: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
30 Comparable types
§2.5
If T is a reference type, these methods may have been overridden in type T
or a base class, or else are the default methods inherited from class Object.
The default
Equals(Object)
method from Object for a reference type simply
compares object references.
 A ReferenceEqualityComparer<T>, where T must be a reference type, denes
equality for reference type T as object reference equality, using class Object’s
static method
ReferenceEquals(Object,Object)
,and denes its hash code us-
ing the original
GetHashCode()
methodfrom class Object,even if
GetHashCode()
has been overridden by T or one of its base classes. Class ReferenceEquality-
Comparer<T> has a single static property
Default
whose value is the refer-
ence equality comparer for type T.
 A KeyValuePairEqualityComparer<K,V> implements the interface IEquality-
Comparer<KeyValuePair<K,V>>, denes equality of two (key,value) pairs as
equality of their keys, and denes the hash code of the (key,value) pair as the
hash code of the key.
The
Equals(Object)
and
GetHashCode()
methods for a collection class are the stan-
dard ones inherited from class Object. In particular,
coll1.Equals(coll2)
tests
whether collections
coll1
and
coll2
are the same object reference, not whether they
contain the same items.
Totest whether collections
coll1
and
coll2
contain thesameitems in someorder,
use
UnsequencedCollectionEqualityComparer<T,W>.Equals(coll1, coll2)
. Here T
is the type of the collections
coll1
and
coll2
, and W is their item type. To test
whether sequenced collections
coll1
and
coll2
contain the same items in the same
order, use
SequencedCollectionEqualityComparer<T,W>.Equals(coll1, coll2)
.
2.5 Comparable types
Interface IComparable<T> from CLI namespace System describes a single method:
int
CompareTo
(T y)
returns a negative number if the given value is less than
y
,zero if it is equal to
y
,and a positive number if it is greater than
y
.
To describe the requirements on method
CompareTo
,let us dene that   and +
are the opposite signs ofeach other and that
0
is the opposite sign of itself. Then the
CompareTo
must satisfy:
 As an ordering relation it must be reexive so that
x.CompareTo(x)
is zero.
 As an ordering relation it must be transitive so if
x.CompareTo(y)
has a given
sign, and
y.CompareTo(z)
have the same sign or is zero, then
x.CompareTo(z)
has the same sign.
 As an ordering relation it must be anti-symmetric so
x.CompareTo(y)
and
y.Compare(x)
must have opposite signs.
control application platform:Online Convert PDF file to Tiff. Best free online PDF Tif
Download Free Trial. Convert a PDF File to Tiff. Just upload your file by clicking on the blue button or drag-and-drop your PDF file into the drop area.
www.rasteredge.com
control application platform:Online Convert PDF file to Word. Best free online PDF Conversion
Convert a Tiff/Tif File to PDF. Just upload your file by clicking on the blue button or drag-and-drop your Tiff or Tif file into the drop area.
www.rasteredge.com
§2.7
Comparers 31
 It must be total so it must never throw an exception. Throwing an exception
in
CompareTo
may corrupt the internal state of a collection.
The result of
CompareTo
should be unaffected by modications to items. This can
be ensured by letting the comparer depend only on immutable (read-only) elds of
items. If an item is modied in a way that affects the results of comparisons while
it is stored in a collection, then the collection will not work properly and may fail in
arbitrary ways.
Many built-in types in C#, such as
long
,do implement IComparable<
long
>, and
hence support comparison with themselves.
Interface System.IComparable is a legacy version of IComparable<T>; it de-
scribes a single method:
int
CompareTo
(Object y)
returns a negative number if the given value is
less than
y
,zero ifit is equal to
y
,and a positive number if it is greater than
y
.
Use IComparable<T> whenever possible for better typesafety, andtoavoid the over-
head of boxing when T is a value type.
2.6 Comparers
Interface IComparer<T> from CLInamespace System.Collections.Generic describes
one method:
int
Compare
(T x, T y)
must return a negative number when
x
is less than
y
,zero when they are equal, and a positive number when
y
is greater than
x
.
To describe the requirements on method
Compare
,let us dene that   and + are
the opposite signs of each other and that
0
is the opposite sign of itself. Then the
Compare
method in an implementation of SCG.IComparer<T> must satisfy:
 As an ordering relation it must be reexive so that
Compare(x,x)
is zero.
 As an ordering relation it must be transitive so if
Compare(x,y)
has a given
sign, and
Compare(y,z)
have the same sign or is zero, then
Compare(x,z)
has
the same sign.
 As an ordering relation it must be anti-symmetric so
Compare(x,y)
and
Compare(y,x)
must have opposite signs.
 It must be total so it must never throw an exception. Throwing an exception
in a comparer may corrupt the internal state of a collection.
Acomparer should be unaffected by modications to items. This can be ensured
by letting the comparer depend only on immutable (read-only) elds of items. If an
item is modied in a way that affects the results of comparisons while it is stored
in a collection, then the collection will not work properly and may fail in arbitrary
ways.
control application platform:Online Convert Excel to PDF file. Best free online export xlsx
Download Free Trial. Convert a Excel File to PDF. Drag and drop your excel file into the box or click the green button to browse for a file to upload.
www.rasteredge.com
control application platform: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
32 Creating comparers
§2.7
2.7 Creating comparers
The static class C5.Comparer<T> is a factory. One cannot create object instances of
it, but can use it to produce a default comparer (ordering) for a given type T. The
class has one static property:
static Comparer<T>.
Default
of type SCG.IComparer<T> is the default com-
parer for type T; see gure 2.3.
When creating a sorted collection of collections, a comparer for the outer collec-
tion’s items (which are themselves inner collections) must often be created explic-
itly; see section 8.3 and 9.17. Since every evaluation of
Comparer<T>.Default
for a
given
T
returns the same comparer object, reference comparison of comparers can
be used to check whether two (inner) collections have the same comparers, provided
the comparers were created by the Comparer<T> class.
Item type T
Comparer<T>.Default
char
CharComparer
sbyte
SByteComparer
byte
ByteComparer
short
ShortComparer
ushort
UShortComparer
int
IntComparer
uint
UIntComparer
float
FloatComparer
double
DoubleComparer
decimal
DecimalComparer
implements System.IComparable<T> NaturalComparer<T>
implements System.IComparable
NaturalComparerO<T>
Figure 2.3: Default comparers for various types.
The comparer classes listed in gure 2.3 dene comparer methods that behave as
follows:
 For the primitive type comparers,
Compare(x, y)
uses the primitive compari-
son operators (
<
)and (
>
)to return a positive number if
x > y
,a negative num-
ber if
x < y
,and zero otherwise,
 A NaturalComparer<T> simply uses the
Compare(T,T)
method from type T,
which must implement System.IComparable<T>; otherwise NotComparable-
Exception is thrown.
 A NaturalComparerO<T> simply uses the
Compare(Object,Object)
method
from type T, which must implement System.IComparable; otherwise NotCom-
parableException is thrown.
control application platform:VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
Convert smooth lines to curves. Detect and merge image fragments. Flatten visible layers. VB.NET Demo Code to Optimize An Exist PDF File in Visual C#.NET Project
www.rasteredge.com
control application platform:VB.NET PDF File Merge Library: Merge, append PDF files in vb.net
VB.NET Components to combine various scanned images to PDF, such as tiff, jpg, png, gif, bmp, etc. Append one PDF file to the end of another one in VB.NET.
www.rasteredge.com
§2.7
Creating comparers 33
AKeyValuePairComparer<K,V> implements SCG.IComparer<KeyValuePair<K,V>>
and denes comparison of two (key,value) pairs by comparison of their keys only.
The class has a single constructor:
KeyValuePairComparer<K,V>(SCG.IComparer<K> cmp)
creates a new (key, value)
pair comparer whose
Compare(K x,K y)
method just calls
cmp.Compare(x,y)
to
compare the keys of two (key, value) pairs.
ADelegateComparer<T> encapsulates a delegate of type System.Comparison<T>
and uses that to implement SCG.IComparer<T>. For that purpose it has a single
constructor:
DelegateComparer<T>(System.Comparison<T> csn)
creates a new comparer
whose
Compare(T x,T y)
method just calls the delegate
csn(x,y)
and returns
its result. The given delegate
csn
must satisfy therequirements on acomparer
mentioned above. In particular, it must never throw an exception.
This is useful for creating comparers inline, for instance when creating a sorted
collection or when sorting arrays or lists. For an example, see pattern 92.
control application platform: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
control application platform:C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
scanned images to PDF, such as tiff, jpg, png, gif, bmp, etc. Merge Microsoft Office Word, Excel and PowerPoint data to PDF form. Append one PDF file to the end
www.rasteredge.com
34 Creating comparers
§2.7
Chapter 3
Auxiliary types
In addition to the interfaces describing the collection concepts and dictionary con-
cepts, and the classes implementing the collections and dictionaries, there are sev-
eral auxiliary enum types, struct types, delegate types and exception types. Ad-
ditional auxiliary types that are primarily of interest to library developers are de-
scribed in chapter 14.
3.1 Enum type EventTypeEnum
The enum type EventTypeEnum is used to report which event handlers are cur-
rently associated with a collection or dictionary, and to report which events can be
listened toat all. See section 8.8.5 for events and event handlers, and see properties
ActiveEvents
and
ListenableEvents
in ICollectionValue<T> (section 4.2). Theenum
type has the following values which can be combined, like ags, using the bitwise
operator or (
|
)to form other values of type EventTypeEnum:
Enum value Corresponding events
Added
ItemsAdded
All
Basic | Inserted | RemovedAt
Basic
Added | Changed | Cleared | Removed
Changed
CollectionChanged
Cleared
CollectionCleared
Inserted
ItemInserted
None
None
Removed
ItemsRemoved
RemovedAt
ItemRemovedAt
For instance, to test whether a CollectionChangedHandler is associated with col-
lection
coll
,evaluate
(coll.ActiveEvents & EventTypeEnum.Changed) != 0
.To test
for no event handler, evaluate
coll.ActiveEvents == EventTypeEnum.None
.
35
36 Enum type Speed
§3.4
3.2 Enum type EnumerationDirection
The enum type EnumerationDirection is used to report the enumeration direction
of a directed collection or directed enumerable; for instance by property
Direction
in interface IDirectedEnumerable<T> (section 4.4). The enum type has two values
which are mutually exclusive:
Enum value Meaning
Forwards
The natural enumeration order
Backwards
The opposite of the natural enumeration order
3.3 Enum type Speed
Enum type Speed has values
Constant
,
Log
,
Linear
and
PotentiallyInfinite
and
is used internally in the C5 library. This type and the properties
ContainsSpeed
(section 4.1),
CountSpeed
(section 4.2) and
IndexingSpeed
(section 4.6) are used to
determine the most efcient way to test equality of two collections.
For instance, if one needs to determine whether collections
coll1
and
coll2
are
equal, and
coll1.ContainsSpeed
is
Linear
and
coll2.ContainsSpeed
is
Constant
,
then it is faster to enumerate all items
x
of
coll1
andtest whether
coll2.Contains(x)
than to do the opposite. This is exploited in C5’s collection equality comparers syn-
thesized by the C5.Comparer<T> class (section 2.7).
The possible values of enum type Speed are:
PotentiallyInfinite
means that the operation may not terminate. For
instance, counting the number of items in a hypothetical lazily generated and
potentially innite collection may not terminate. Note that all operations on
C5’s collection classes or dictionary classes do terminate.
Linear
means that the operation takes time
O
(
n
), where
n
is the size of the
collection. For instance, this is the case for item lookup with
Contains(x)
on
non-hashed lists.
Log
means that a the operation takes time
O
(
logn
), where
n
is the size of the
collection. For instance, this is the case for item lookup with
Contains(x)
on
tree sets, tree bags, and sorted arrays.
Constant
means that the operation takes time
O
(
1
), that is, constant time.
For instance, this is the case for item indexing
this[i]
on array lists, and is
the expected time for item lookup with
Contains(x)
on hash sets, hash bags,
and hashed lists.
§3.5
Record struct types Rec<T1,T2>, ... 37
3.4 Record struct types Rec<T1,T2>, . ..
In generic function libraries it is convenient to have ways to represent records, such
as pairs, triples, and quadruples. This purpose is served by the Rec family of record
struct types, declared as shown below.
public struct Rec<T1,T2> : IEquatable<Rec<T1,T2>>, IShowable {
public readonly T1 X1;
public readonly T2 X2;
public Rec(T1 x1, T2 x2) {
this.X1 = x1; this.X2 = x2;
}
public override int GetHashCode() { ... }
public override bool Equals(Object o) { ... }
public override bool Equals(Rec<T1,T2> that) { ... }
public static bool operator==(Rec<T1,T2> r1, Rec<T1,T2> r2) { ... }
public static bool operator!=(Rec<T1,T2> r1, Rec<T1,T2> r2) { ... }
public bool Show(StringBuilder sb, ref int rest, IFormatProvider fmp) { ... }
}
public struct Rec<T1,T2,T3> : IEquatable<Rec<T1,T2,T3>>, IShowable { ... }
public struct Rec<T1,T2,T3,T4> : IEquatable<Rec<T1,T2,T3,T4>>, IShowable { ... }
Note that the elds
X1
,
X2
,...are public but read-only, to prevent the confusion that
results from updating a eld of a copy of a struct value, rather than the original
struct value.
The
Equals(Object o)
method of a record type returns false when
o
is
null
or is
not a boxed instance of the record type; otherwise compares the records eld by eld
using their
Equals
methods.
The
Equals(Rec<T1,T2>)
method in type Rec<T1,T2> and the operators (
==
)and
(
!=
)compare the record elds using the
Equals
methods for the eld types T1 and
T2.
3.5 Struct type KeyValuePair<K,V>
Astruct of type KeyValuePair<K,V> is used represent pairs of a key of type K and
an associated value of type V. It has public elds
Key
and
Value
. It is similar to
Rec<K,V>, but the elds are called
Key
and
Value
rather than
X1
and
X2
,and the
formatting by
ToString
is different. The natural comparer and equality comparer
for a KeyValuePair<K,V> compares the keys only; the values are ignored.
38 Delegate types
§3.6
3.6 Delegate types
The delegatetype families Act andFun describedbelowareused by several methods
in interface ICollectionValue<T> and elsewhere. For event handler types, which are
delegate types too, see section 8.8.
3.6.1 Action delegate types Act<A1>, Act<A1,A2>, ...
Delegate type Act<A1> is the type of functions or methods from A1 to
void
,used
to perform some side-effect or action for a given collection item
x
.Type Act<A1> is
part of a family of such action delegate types with zero to four arguments, declared
as follows:
public delegate void Act();
public delegate void Act<A1>(A1 x1);
public delegate void Act<A1,A2>(A1 x1, A2 x2);
public delegate void Act<A1,A2,A3>(A1 x1, A2 x2, A3 x3);
public delegate void Act<A1,A2,A3,A4>(A1 x1, A2 x1, A3 x3, A4 x4);
The type Act<T> corresponds to System.Action<T> in in the CLI or .NET class li-
brary.
3.6.2 Function delegate types Fun<A1,R>, Fun<A1,A2,R>, . ..
Delegate type Fun<A1,R> is the type of functions or methods from A1 to R, used to
compute some transformation for a given collection item
x
.Type Fun<A1,R> is part
of a family of such function delegate types with zero to four arguments, declared as
follows:
public delegate R Fun<R>();
public delegate R Fun<A1,R>(A1 x1);
public delegate R Fun<A1,A1,R>(A1 x1, A2 x2);
public delegate R Fun<A1,A2,A3,R>(A1 x1, A2 x2, A3 x3);
public delegate R Fun<A1,A2,A3,A4,R>(A1 x1, A2 x1, A3 x3, A4 x4);
The type Fun<A1,R> is the type of functions or converters from type A1 to type R,
and corresponds to System.Converter<A1,R> in the CLI or .NET class library. The
type Fun<T,bool> is the type of predicates for values of type T and corresponds to
type System.Predicate<T> in the CLI or .NET class library.
Documents you may be interested
Documents you may be interested