如何在c#中实现Array.ConvertAll方法
问题描述:
我不能将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;
}
}
}
答
Array a = new Array();
a.Cast<long>().ToArray();
答
我不所有清除(代码)你正在尝试做的,而是给的Array.ConvertAll
一个典型的例子(比较):
string[] data = { "123", "456", "789" };
int[] ints = Array.ConvertAll(data, int.Parse);
这里,分配长度为3的int[]
,然后(对于每个字符串)int.Parse
用于从字符串转换为int;输出应为int[]
,其值为123
,456
,789
。
更复杂的例子(使用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"
。
问题是什么?你得到一个例外吗?你是否收到编译错误? – Dennis 2010-10-18 06:06:46
@ Dede我收到“Convert converted”的错误,表示无效的表达式int –
2010-10-18 06:12:53
@Pro_Zeck:因为这不是有效的代码。 – leppie 2010-10-18 06:19:56