无法在c#中看到列表中的值

时间:2013-06-30 10:17:32

标签: c# asp.net

我有以下代码: 但我无法响应在列表中写入值以进行调试......

 public void LottoWinners(object sender, EventArgs e)
    {

        Dictionary<int, int> number = new Dictionary<int, int>();
        Random generator = new Random();
        while (number.Count < 6)
        {
            number[generator.Next(1, 49)] = 1;
        }

        int[] lotto = number.Keys.OrderBy(n => n).ToArray();

       List<int> lst = lotto.OfType<int>().ToList();


       StringBuilder builder = new StringBuilder();
       for (int i = 0; i < lst.Count; i++) // Loop through List with for
       {
           builder.Append(lst).Append("|"); // Append string to StringBuilder
       }
       string result = builder.ToString(); // Get string from StringBuilder

       Response.Write(result);

    }

但我所看到的只是我的结果。我应该看到我的名单的价值!

System.Collections.Generic.List`1

4 个答案:

答案 0 :(得分:5)

你需要这样做:

builder.Append(lst[i])

获取您尝试访问的列表元素。目前你只是附加整个列表,这没有意义。

答案 1 :(得分:3)

当您在ToString上致电List<T>时会发生这种情况。在你的代码中,这就发生在这里:

builder.Append(lst)

您只需将其替换为:

builder.Append(lst[i])

BTW你可以取代它:

StringBuilder builder = new StringBuilder();
for (int i = 0; i < lst.Count; i++) // Loop through List with for
{
    builder.Append(lst).Append("|"); // Append string to StringBuilder
}
string result = builder.ToString(); // Get string from StringBuilder

用这个:

string result = string.Join("|", lst) + "|";

答案 2 :(得分:1)

这里附加列表对象:

builder.Append(lst) 

而不是一个项目:

builder.Append(lst[i]) 

除此之外,您的代码似乎很好

答案 3 :(得分:1)

builder.append(lst)正在附加列表,内部调用ToString()。列表中的ToString()返回

  
    

System.Collections.Generic.List`1

  

所以这是正确的行为。你想要做的就是使用索引器:

for (int i = 0; i < lst.Count; i++) // Loop through List with for
       {
           builder.Append(lst[i]).Append("|"); // Append string to StringBuilder
       }