无法将对象转换为字符串c#?

Dav*_*bak 1 .net c# asp.net exception-handling arraylist

我试图从中提取价值,AraryList但我不断得到的是System.Object[]......

protected void Page_Load(object sender, EventArgs e)
{
    ReadDb readClass = new ReadDb();
    ArrayList list = new ArrayList();
    list = readClass.ReadFromDb();

    string s = list[4].ToString();
    Response.Write(s);     
}
Run Code Online (Sandbox Code Playgroud)

编辑:

public class ReadDb
{
    List<string> rowList = new List<string>();

    public List<string> ReadFromDb()
    {
        Database db = new Database(); 

        try
        {
            using(SqlConnection con = new SqlConnection(db.ConnectionString))
            {
                con.Open();
                SqlCommand cmd = new SqlCommand("SELECT * FROM Blog", con);
                SqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                   object[] values = new object[reader.FieldCount];
                   reader.GetValues(values);
                   rowList.Add(values.ToString());
                }
                con.Close(); 
            }           
        }
        catch//(SqlException e)
        {
        }
        return rowList;
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有任何想法吗?

And*_*bel 10

不要使用ArrayList,请Array<string>改用.在2.0之前的.NET中,没有泛型,也没有办法制作类型安全的集合.ArrayList是.NET 1.X次的原始集合之一.

编写新代码时,请始终使用类型安全通用集合.Array<string>(简称写成string[])就是这样一种类型.

编辑

问题出在代码的这一部分:

object[] values = new object[reader.FieldCount];
reader.GetValues(values);
rowList.Add(values.ToString());
Run Code Online (Sandbox Code Playgroud)

values是一个对象数组.该ToString()方法object[]不返回数组中对象的内容,只返回该类型的名称.您必须将调用更改values.ToString()为将检索到的行的值格式化为字符串的内容.例如:

rowList.Add(string.Format("Name: {0}, Address: {1}", values[0], values[1]);
Run Code Online (Sandbox Code Playgroud)

  • 最好使用`List <string>`. (2认同)