c#为什么老出现无法将QQmanagerDB.Item隐式转换为system.Array

CSDN移动问答

CSDN移动问答

public Array[] GetAll(string sql)
{
Array[] arr = new Array[100];
int i = 0;
try
{
SqlCommand command = new SqlCommand(sql,db.conn);
db.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Item it = new Item();
it.ID = Convert.ToInt32(reader["ID"]);
it.Name = (reader["Name"]).ToString();
it.Level = (reader["Level"]).ToString();
it.Email = (reader["Email"]).ToString();
it.days = Convert.ToDouble(reader["days"]);
arr[i] = it;
i++;
}
}

page:

case 1:

                    string sql = "select * from Users";
                    Array[] arr = man.GetAll(sql);
                    Console.WriteLine("----------------------------------------------------------");
                    Console.WriteLine("编号\t昵称\t等级\t天数\t邮箱");
                    Console.WriteLine("----------------------------------------------------------");
                    foreach (Array item in arr)
                    {
                        if (item != null)
                        {
                            Console.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}");
                        }
                        else
                        {
                           break;   
                        }
                        Console.WriteLine("----------------------------------------------------------");
                    }
                    break;

你的代码中,你声明了一个Array[]类型的数组arr,但是你在循环中将Item类型的对象赋值给了数组的元素,这就导致了编译错误。


你可以将数组的类型改为Item[],或者将循环中的Array item改为Item item来解决此问题。

例如:

public Item[] GetAll(string sql)
{
    Item[] arr = new Item[100];
    int i = 0;
    try
    {
        SqlCommand command = new SqlCommand(sql, db.conn);
        db.Open();
        SqlDataReader reader = command.ExecuteReader();
        while(reader.Read())
        {
            Item it = new Item();
            it.ID = Convert.ToInt32(reader["ID"]);
            it.Name = (reader["Name"]).ToString();
            it.Level = (reader["Level"]).ToString();
            it.Email = (reader["Email"]).ToString();
            it.days = Convert.ToDouble(reader["days"]);
            arr[i] = it;
            i++;
        }
    }
    page:
    case 1:
        string sql = "select * from Users";
        Item[] arr = man.GetAll(sql);
        Console.WriteLine("----------------------------------------------------------");
        Console.WriteLine("编号\t昵称\t等级\t天数\t邮箱");
        Console.WriteLine("----------------------------------------------------------");
        foreach(Item item in arr)
        {
            if(item != null)
            {
                Console.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}");
            }
            else
            {
                break;
            }
            Console.WriteLine("----------------------------------------------------------");
        }
        break;