なるほどな。
それはそれとして、C# では、
- using System;
- namespace Example
- {
- public static class Ext
- {
- public static T[] InitializeWith<T>(this T[] array, T val)
- {
- for (int i = 0; i < array.Length; i++)
- {
- array[i] = val;
- }
- return array;
- }
- public static void Print<T>(this T[] array, string separater)
- {
- foreach (T t in array)
- {
- Console.Write("{0}{1}", t.ToString(), separater);
- }
- Console.WriteLine("\b ");
- }
- }
- public class Program
- {
- public static void Main(string[] args)
- {
- //int[] ar0 = new int[3]{0}; // error CS0847: An array initializer of length `3' was expected
- //int[] ar0 = new int[3]{}; // error CS0847: An array initializer of length `3' was expected
- int[] ar0 = new int[3];
- int[] ar1 = new int[3]{ 1, 2, 3 };
- int[] ar2 = new int[]{ 4, 5, 6 };
- int[] ar3 = { 7, 8, 9 };
- var ar4 = new []{ 0, 1, 2 };
- int[] ar5 = new int[3].InitializeWith(1);
- ar0.Print(","); // 0,0,0
- ar1.Print(","); // 1,2,3
- ar2.Print(","); // 4,5,6
- ar3.Print(","); // 7,8,9
- ar4.Print(","); // 0,1,2
- ar5.Print(","); // 1,1,1
- }
- }
- }
- /*
- * Build:
- *
- * gmcs array.cs
- *
- * Run:
- *
- * mono array.exe
- *
- */
任意の値で配列の全要素を設定(初期化)したい場合は、拡張メソッド等を用意してやればいいのかな。
1 件のコメント:
Before:
public static void Print<T>(this T[] array, string title)
After:
public static void Print<T>(this T[] array, string separater)
に伴う変更を行いました。
コメントを投稿