0

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

 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

4 回答 4

5

你需要这样做:

builder.Append(lst[i])

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

于 2013-06-30T10:19:30.683 回答
3

这就是你打电话时发生的ToString事情List<T>。在您的代码中,这发生在此处:

builder.Append(lst)

您所要做的就是将其替换为:

builder.Append(lst[i])

顺便说一句,您可以替换它:

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) + "|";
于 2013-06-30T10:19:24.743 回答
1

在这里,您要附加列表对象:

builder.Append(lst) 

而不是一项:

builder.Append(lst[i]) 

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

于 2013-06-30T10:20:29.840 回答
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
       }
于 2013-06-30T10:20:43.093 回答