static void CallByRef(ref Value a) { a.Test(); a = new Value(7); }
static void Main() { { TestLogger.Log("Testing array initialization..."); var arr = new int[4]; arr[1] = 3; arr[3] = 7; for (var i = 0; i < arr.Length; i++) TestLogger.Log(arr[i]); } { TestLogger.Log("Testing array initializers..."); var arr = new int[] { 1, 2, 3, 4, 5 }; Test(arr); TestLogger.Log("Testing array copy..."); var copy = new int[9]; Array.Copy(arr, 0, copy, 0, arr.Length); for (var i = 0; i < copy.Length; i++) TestLogger.Log(copy[i]); TestLogger.Log("Testing array out of range behavior..."); try { TestLogger.Log(arr[29]); } catch (Exception e) { TestLogger.LogException(e); } try { arr[29] = 3; } catch (Exception e) { TestLogger.LogException(e); } } { TestLogger.Log("Testing simple enumeration..."); var sb = new StringBuilder(); var first = true; foreach (var prime in primes) { if (first) first = false; else sb.Append(","); sb.Append(prime.ToString()); } TestLogger.Log(sb.ToString()); } { TestLogger.Log("Testing refs to array elements..."); var arr = new Value[] { new Value(1), new Value(2), new Value(3) }; arr[1].Test(); CallByRef(ref arr[1]); arr[1].Test(); } { var arr = new B[9]; FillAsA(arr); FillAsB(arr); FillAsArray(arr); EnumAsB(arr); EnumAsA(arr); EnumAsArray(arr); } { TestLogger.Log("Testing multi-dimensional arrays..."); var arr = new int[3, 7]; var k = 0; for (var i = 0; i < 3; i++) { for (var j = 0; j < 7; j++) { arr[i, j] = primes[k++]; if (k >= primes.Length) k = 0; } } foreach (var v in arr) TestLogger.Log(v); } }