object arr = new long[] {100, 1000, 10000};
object arr1 = new string[] {"100", "1000", "10000"};
Console.WriteLine(string.Join(",", (object[])arr));
Console.WriteLine(string.Join(",", (object[])arr1));
第一个Console报错,目的是想让它输出 "100,1000,10000";
这里的arr可能是任意基础类型的数组,可能是string[] 也可能是 int[],所以不能直接使用long[] 来强转.
除了string[],其他类型想要强转成object[] 就会报错,有同学晓得咋个解决不?
7 个解决方案
#1
你可以传入泛型,然后就没必要强转了,另外如果是方法传递的参数的话,你可以查下协变逆变
#2
使用匿名就好了
public static void Main(string[] args)
{
var arr1 = new long[] { 100, 1000, 10000 };
var arr2 = new string[] { "100", "1000", "10000" };
var q1 = string.Join(",",arr1.Select(x => x.ToString()).ToList());
var q2 = string.Join(",", arr2.Select(x => x.ToString()).ToList());
Console.ReadLine();
}
#3
这个用var声明的其实var只是long[] 的简写而已,并不是object类型,我的应用场景比较符合#1楼说的方法参数。
#4
试试看。之前没接触过这种名词...瞬间感觉自己不是个C#程序员了.....
#5
哦,我看你只是为了输出一个字符串,所以以为不需要转换成 object
#6
out 了, 协变就是自己天天在用的东西...唉,从没注意过这些。
因为是要翻译表达式树传入的参数改成SQL 的 in 子句,只能获取到object类型,看来这个问题无解了。不过谢谢两位的积极回答。
因为是要翻译表达式树传入的参数改成SQL 的 in 子句,只能获取到object类型,看来这个问题无解了。不过谢谢两位的积极回答。
#7
out 了, 协变就是自己天天在用的东西...唉,从没注意过这些。
因为是要翻译表达式树传入的参数改成SQL 的 in 子句,只能获取到object类型,看来这个问题无解了。不过谢谢两位的积极回答。
之前也有人问过类似的问题,
他采用sqlpara参数放入遇到的问题。
原文是这个:http://bbs.csdn.net/topics/391878891
#1
你可以传入泛型,然后就没必要强转了,另外如果是方法传递的参数的话,你可以查下协变逆变
#2
使用匿名就好了
public static void Main(string[] args)
{
var arr1 = new long[] { 100, 1000, 10000 };
var arr2 = new string[] { "100", "1000", "10000" };
var q1 = string.Join(",",arr1.Select(x => x.ToString()).ToList());
var q2 = string.Join(",", arr2.Select(x => x.ToString()).ToList());
Console.ReadLine();
}
#3
使用匿名就好了
public static void Main(string[] args)
{
var arr1 = new long[] { 100, 1000, 10000 };
var arr2 = new string[] { "100", "1000", "10000" };
var q1 = string.Join(",",arr1.Select(x => x.ToString()).ToList());
var q2 = string.Join(",", arr2.Select(x => x.ToString()).ToList());
Console.ReadLine();
}
这个用var声明的其实var只是long[] 的简写而已,并不是object类型,我的应用场景比较符合#1楼说的方法参数。
#4
你可以传入泛型,然后就没必要强转了,另外如果是方法传递的参数的话,你可以查下协变逆变
试试看。之前没接触过这种名词...瞬间感觉自己不是个C#程序员了.....
#5
使用匿名就好了
public static void Main(string[] args)
{
var arr1 = new long[] { 100, 1000, 10000 };
var arr2 = new string[] { "100", "1000", "10000" };
var q1 = string.Join(",",arr1.Select(x => x.ToString()).ToList());
var q2 = string.Join(",", arr2.Select(x => x.ToString()).ToList());
Console.ReadLine();
}
这个用var声明的其实var只是long[] 的简写而已,并不是object类型,我的应用场景比较符合#1楼说的方法参数。
哦,我看你只是为了输出一个字符串,所以以为不需要转换成 object
#6
out 了, 协变就是自己天天在用的东西...唉,从没注意过这些。
因为是要翻译表达式树传入的参数改成SQL 的 in 子句,只能获取到object类型,看来这个问题无解了。不过谢谢两位的积极回答。
因为是要翻译表达式树传入的参数改成SQL 的 in 子句,只能获取到object类型,看来这个问题无解了。不过谢谢两位的积极回答。
#7
out 了, 协变就是自己天天在用的东西...唉,从没注意过这些。
因为是要翻译表达式树传入的参数改成SQL 的 in 子句,只能获取到object类型,看来这个问题无解了。不过谢谢两位的积极回答。
之前也有人问过类似的问题,
他采用sqlpara参数放入遇到的问题。
原文是这个:http://bbs.csdn.net/topics/391878891