x
• Status: Solved
• Priority: Medium
• Security: Public
• Views: 222

# What is orthogonal?

In C#, how can something be "orthoganally" related to something else?

For example, this book I am reading makes the following statement:

"Every collection provides some method for iterating through the contents of the container.  In the C++ STL [[[(Standard Template Library?)]]] world, there exists the concept of an iterator; this is ORTHOGANAL to the concept of an enumerator in the world of COM.  Anyone who has had the pleasure of implementing the IEnumVARIANT interface will appreciate the ease of implementing the IEnumerable interface along with providing an IEnumerator interface available in the .NET Framework."

I take it from this statement that orthogonal is "opposite to" ????

The author is being sarcastic about the "pleasure of implementing the IEnumVARIANT interface".........so this is really hard to do?????

Thanks,

Tom
0
Tom Knowlton
1 Solution

Commented:
That is what orthogonal means, and from the way I read it the author is indeed trying to be funny.  I've never used the IEnumVARIANT interface--so I cannot comment.
0

Commented:
Actually, orthogonal does not mean 'opposite to' (If you want a real word-play, it's meaning is almost opposite to 'opposite').

It means more like 'equivalent from a parallel standpoint' (it comes form maths, to do with right-angles / parallels) - ie its saying that the enumerator is to com what the iterator is in c++ stl.

The sarcasm is indicating that making collections implement the IEnumerable (which enables enumerating through a collection) is really so much easier now with C#.  Which is really a good thing.  I.e forget about the IEnumVARIANT stuff, breathe a sigh of relief, and experience the wonder and power of IEnumerable and IEnumerator.  It is also subtely indicating that you will need to implement IEnumerator much less frequently than the more common IEnumerable.  An IEnumerator returns an iterator itself (the thing that iterates throught the collection) and therefore has more methods to implement for controling the iterator, while the IEnumerable simply provides an iterator via its single GetEnumerator() method.

btw, the author's right :)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.