在c#中看不到列表中的值

本文关键字:列表 看不到 | 更新日期: 2023-09-27 18:20:22

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

 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

在c#中看不到列表中的值

您需要这样做:

builder.Append(lst[i])

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

这是在List<T>上调用ToString时发生的情况。在你的代码中,这就发生在这里:

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) + "|";

在这里添加列表对象:

builder.Append(lst) 

代替一项:

builder.Append(lst[i]) 

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

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
       }