/// <summary> /// Iterates this array efficiently. /// </summary> /// <param name="function">The function to call for every value in this array.</param> public virtual void ForEach(ForIndexedFunctionHandler function) { fixed(double *src = this) { var cnt = LinearLength; var props = Properties; for (int i = 0; i < cnt; i++) { function(i / props, i % props, src[i]); } } }
public virtual void ForEach(int property, ForIndexedFunctionHandler function) { if (property >= Properties) { throw new ArgumentOutOfRangeException(nameof(property)); } if (Properties == 1) { ForEach(function); } else { fixed(double *src = this) { var cnt = Count; var props = Properties; for (int i = property; i < cnt; i += props) { function(i / Properties, property, src[i]); } } } }