NMath User's Guide

TOC |  Previous |  Next |  Index

5.8 Vector Enumeration (.NET, C#, CSharp, Visual Basic, VB.NET)

NMath vector classes provide standard .NET GetEnumerator() methods for returning IEnumerator objects. For example:

FloatVector v = new FloatVector( 12, -4.3F );
IEnumerator elements = v.GetEnumerator();

float[] data = new float[ v.Length ];
int i = 0;
while ( elements.MoveNext() ) 
{
  data[i++] = (float) elements.Current;
} 

Note that the Current property on an IEnumerator returns the current object in the collection, which must then be cast to the appropriate type. NMath also provides custom strongly-typed enumerators: IFloatEnumerator, IDoubleEnumerator, IFloatComplexEnumerator, and IDoubleComplexEnumerator. These avoid casting, and are therefore much faster. For instance:

FloatVector v = new FloatVector( 12, -4.3F );
IFloatEnumerator elements = v.GetFloatEnumerator();

float[] data = new float[ v.Length ];
int i = 0;
while ( elements.MoveNext() ) 
{
  data[i++] = elements.Current;      // No need to cast to float
}

TOC |  Previous |  Next |  Index