我正在做家庭作業,除二進制搜索外,一切工作。當程序執行時,我在Friend temp =(Friend)o中得到以下錯誤;的IComparable:InvalidCastException未被用戶代碼處理。無法投射'System.String'類型的對象來鍵入'FriendList.Friend'。我可以使用幫助來查明我誤導的地方。提前致謝。BinarySearch錯誤導致InvalidCastException
using System;
using System.Linq;
namespace FriendList
{
public static class FriendList
{
public static void Main()
{
var findname = "";
var friends = new Friend[8];
for (var i = 0; i < 8; i++)
{
Console.Write("Enter a name (or type quit to skip): ");
var name = Console.ReadLine();
if (name.ToLower() == "quit")
{
return;
}
Console.Write("Enter a phone number: ");
var phone = Console.ReadLine();
Console.Write("Enter a birth month number: ");
var month = Console.ReadLine();
Console.Write("Enter a birth day: ");
var day = Console.ReadLine();
Console.Write("Enter a birth year: ");
var year = Console.ReadLine();
friends[i] = new Friend
{
Name = name,
Phone = phone,
Month = Convert.ToInt32(month),
Day = Convert.ToInt32(day),
Year = Convert.ToInt32(year)
};
}
Array.Sort(friends);
for (int x = 0; x < 8; ++x)
{
Console.Write("{0} {1} {2}{3}{4}", friends[x].Name, friends[x].Phone, friends[x].Month, friends[x].Day, friends[x].Year);
Console.Write("\n");
}
Console.ReadKey();
var findfriends = new Friend();
Console.Write("Enter the name you want for info:");
findname = Console.ReadLine();
for (int x = 0; x < 8; ++x)
{
x = Array.BinarySearch(friends, findname);
Console.Write("{0} {1} {2}{3}{4}", friends[x].Name, friends[x].Phone, friends[x].Month, friends[x].Day, friends[x].Year);
}
}
}
class Friend : IComparable
{
public string Name { get; set; }
public string Phone { get; set; }
public int Month { get; set; }
public int Day { get; set; }
public int Year { get; set; }
public Friend()
{ }
int IComparable.CompareTo(Object o)
{
Friend temp = (Friend)o;
return String.Compare(this.Name, temp.Name);
}
}
}
你應該實現IComparable接口''代替。 –
SLaks