Skip to Main Content
C# Cookbook, 2nd Edition
book

C# Cookbook, 2nd Edition

by Jay Hilyard, Stephen Teilhet
January 2006
Intermediate to advanced content levelIntermediate to advanced
1184 pages
43h 23m
English
O'Reilly Media, Inc.
Content preview from C# Cookbook, 2nd Edition
This is the Title of the Book, eMatter Edition
Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.
Implementing Iterators as Overloaded Operators
|
343
See Also
See the “Iterators,” “IEnumerator Interface,” and “IEnumerable Interface” topics in
the MSDN documentation.
6.7 Implementing Iterators as Overloaded Operators
Problem
You need the ability to iterate over two or more collections and enumerate all ele-
ments in each set using a foreach loop construct. In addition to this, you also want to
be able to iterate over the unique elements in each set and the duplicate elements in
each set.
Solution
Create overloaded operators that act as iterators. The following code shows how to
set up an iterator on an overloaded
+ operator:
public static IEnumerable<T> operator +(IEnumerable<T> lhs, IEnumerable<T> rhs)
{
foreach (T t in lhs)
{
yield return (t);
}
foreach (T t in rhs)
{
yield return (t);
}
}
We will use the previous code example in creating a Set class, shown in
Example 6-5, which makes use of the familiar
GetEnumerator iterator method, but
also overloads the
+, |, and & operators for use as iterators.
Example 6-5. Implementing iterators as overloaded operators (+, |, and &)
public class Set<T>
{
private List<T> _items = new List<T>( );
public void AddItem(T name)
{
if (!_items.Contains(name))
_items.Add(name);
else
throw (new ArgumentException("This value can only be added to a set once.", ...
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

C# Cookbook

Stephen Teilhet, Jay Hilyard
Head First C#, 4th Edition

Head First C#, 4th Edition

Andrew Stellman, Jennifer Greene

Publisher Resources

ISBN: 0596100639Supplemental ContentCatalog PageErrata