我有以下代码: 但我无法响应在列表中写入值以进行调试......
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
答案 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
}