2010-10-18 764 views
-1

我不能将T TYPE数组转换为Int数组我的代码如下。如何在c#中实现Array.ConvertAll方法

T [] arra = new T [arr.Length];

 int [] converted = new int[arr.Length]; 
     T element; 
     for (int i = 0; i < arr.Length; i++) 
     { 
      for (int j = 0; j < arr.Length - 1-i; j++) 
      { 
       Type s = (Type)System.Int64; 
       Type t = arr.GetType(); 
       Converter<T,int> a; 
       if (t.Equals(s)) 
       { 
        Array.ConvertAll<T, int>(arr, Converter < T,int> converted); 
       } 

       if (arr[j] > arr[j + 1]) 
       {    

        element = arr[j]; 
        arr[j] = arr[j + 1]; 
        arr[j + 1] = element; 
       } 
      } 
     } 
+1

问题是什么?你得到一个例外吗?你是否收到编译错误? – Dennis 2010-10-18 06:06:46

+0

@ Dede我收到“Convert converted”的错误,表示无效的表达式int – 2010-10-18 06:12:53

+0

@Pro_Zeck:因为这不是有效的代码。 – leppie 2010-10-18 06:19:56

回答

1
Array a = new Array(); 
    a.Cast<long>().ToArray(); 
1

我不所有清除(代码)你正在尝试做的,而是给的Array.ConvertAll一个典型的例子(比较):

string[] data = { "123", "456", "789" }; 
int[] ints = Array.ConvertAll(data, int.Parse); 

这里,分配长度为3的int[],然后(对于每个字符串)int.Parse用于从字符串转换为int;输出应为int[],其值为123456789

更复杂的例子(使用lambda语法):

string[] data = { "abc", "def", "ghi" }; 
string[] reversed = Array.ConvertAll(data, s => { 
    char[] chars = s.ToCharArray(); 
    Array.Reverse(chars); // note; not fully i18n safe 
    return new string(chars); 
}); 

这里拉姆达体(这是我们的转换器)反转每个串(通过反转字符);结果应该是string[],其值为"cba","fed","ihg"

相关问题