在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
您需要这样做:
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
}