日期:2014-05-18  浏览次数:20903 次

类型不符?
public static void DisplayByPrice(Book[] arrBooks)
  {
  int bookPrice = arrBooks.GetUpperBound(0) - arrBooks.GetLowerBound(0) + 1;
  int [] lengths = new int [] { bookPrice };
  int[] lowerBounds = new int[] { 0 };
  Array arrPrices = Array.CreateInstance(Type.GetType("System.String"), lengths, lowerBounds);
  for (int i = arrBooks.GetLowerBound(0); i <= arrBooks.GetUpperBound(0); i++)
  arrPrices.SetValue(arrBooks[i].dblPrice,i);
  Array.Sort(arrPrices, arrBooks);
  foreach (Book item in arrBooks)
  {
  Console.WriteLine("{0} {1} {2}", item.dblPrice, item.strName, item.strAuthor);
  }

  }
系统提示arrPrices.SetValue(arrBooks[i].dblPrice,i);这里有错“未处理InvalidCastException”请问怎么改?


------解决方案--------------------
Array arrPrices = Array.CreateInstance(Type.GetType("System.String"), lengths, lowerBounds); 
改成
Array arrPrices = Array.CreateInstance(Type.GetType("System.Double"), lengths, lowerBounds);
------解决方案--------------------
探讨
Array arrPrices = Array.CreateInstance(Type.GetType("System.String"), lengths, lowerBounds);
改成
Array arrPrices = Array.CreateInstance(Type.GetType("System.Double"), lengths, lowerBounds);