ArrayList arr = new ArrayList();
  arr.Add(new SqlParameter("@tt",partyNum));
  SqlParameter[] tt = (SqlParameter[])arr.ToArray();  用ArrayList强制转换成Object[]数组,然后再转换成SqlParamter[]类型报以下错误,感觉很奇怪...
  麻烦解答下 。结果我只能使用泛型了。。 List<SqlParameter> list = new List<SqlParameter>();
 list.Add(new SqlParameter("@partyNum", partyNum));
 list.Add(new SqlParameter("@beginDate", beginDate));
 list.Add(new SqlParameter("@endDate", endDate));
 SqlParameter[] param = list.ToArray();

解决方案 »

  1.   

    单独的一个一个转换时可以的。
    比如:
         ArrayList list = new ArrayList();
               list.Add(new SqlParameter("@tt", "123"));
               SqlParameter t = (SqlParameter)list[0];
      

  2.   

    那很正常,因为object[]里的元素不一定都是SqlParameter类型的,所以编译器当然不能让你这么随便转
    既然你都知道用泛型集合了,为什么还要用ArrayList呢
      

  3.   

    加上转换类型撒
    SqlParameter[] tt = (SqlParameter[])arr.ToArray(tpyeof(SqlParameter)); 
      

  4.   

    SqlParameter[] tt = (SqlParameter[])arr.ToArray(typeof(SqlParameter)); 
      

  5.   

    泛型,王道,這就是升級到.NET FrameWork 2.0或者以上 的好處... ...
      

  6.   

    对,因为代码逻辑是你写的,你知道object数组里放的都是SqlParameter类型的对象,但编译器可不知道