Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么列表中的元素计数显示为零?_C# - Fatal编程技术网

C# 为什么列表中的元素计数显示为零?

C# 为什么列表中的元素计数显示为零?,c#,C#,我正试图通过一些在线课程学习c语言编程,以帮助完善我的知识。事实证明,这是极具挑战性的。我似乎认为我明白了,然后,当我坐下来做实践练习时,我常常被难倒。我倾向于喜欢这样,因为这迫使我学会如何在问题出现时研究和解决问题——对我来说,我通常通过这种方式学得很好 尽管如此,我还是有一些障碍无法解决。如果我想看的话,我有练习题的答案,但我不想这样做,因为我觉得那样我学的东西很少 我真的不想分享这项任务是什么,因为我不想帮助解决它——我认为任何试图帮助我的人都不需要知道这一点 在下面的代码中,我只想帮助理

我正试图通过一些在线课程学习c语言编程,以帮助完善我的知识。事实证明,这是极具挑战性的。我似乎认为我明白了,然后,当我坐下来做实践练习时,我常常被难倒。我倾向于喜欢这样,因为这迫使我学会如何在问题出现时研究和解决问题——对我来说,我通常通过这种方式学得很好

尽管如此,我还是有一些障碍无法解决。如果我想看的话,我有练习题的答案,但我不想这样做,因为我觉得那样我学的东西很少

我真的不想分享这项任务是什么,因为我不想帮助解决它——我认为任何试图帮助我的人都不需要知道这一点

在下面的代码中,我只想帮助理解实际发生的事情。我知道,我知道,这听起来非常笼统,但我太新了,不知道如何正确地表达我的问题

我想我的问题可以归结为:为什么“ListNumber”列表中的元素计数显示为零

我的逻辑是:

我要求用户输入用连字符分隔的内容。 我获取该输入并在连字符处拆分为字符串数组。 我创建了一个空列表。 我循环遍历字符串数组的每个元素,转换为int32,然后添加到列表中。 我把一个计数器放上去,看看它循环了多少次——这是根据最初输入的数字准确显示的。 我用第二个计数器遍历列表中的每个元素,查看循环次数——这似乎也能根据最初输入的数字准确显示

尽管如此,我在列表中的元素计数显示为零,就像列表中没有元素一样

这怎么可能

有人能解释一下为什么我在列表中的元素计数显示为零吗

非常感谢大家

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication10
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Please enter a few numbers separated by a hyphen and then press 'Enter'.");
            var userInput = Console.ReadLine();
            var numbers = userInput.Split('-');

            var listNumbers = new List<Int32>();
            var counter1 = 0; // Just for troubleshooting
            var counter2 = 0; // Just for troubleshooting

            var count = listNumbers.Count;

                foreach (string number in numbers)
                    {
                    var convertedNumber = Convert.ToInt32(number);
                    listNumbers.Add(convertedNumber);
                    counter1++; // Just for troubleshooting
                    }

                foreach (int listNumber in listNumbers)
                    {
                    counter2++; // Just for troubleshooting
                    Console.WriteLine(listNumber); // Just for troubleshooting
                    }

            // Just for troubleshooting
            Console.WriteLine("----------");
            Console.WriteLine("Count of loops through coversion from string to int32 and adding each to list: " + counter1);
            Console.WriteLine("Count of loops through the list itself: " + counter2);
            Console.WriteLine("Count of elements in list: " + count);

        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
命名空间控制台应用程序10
{
班级计划
{
静态void Main(字符串[]参数)
{
WriteLine(“请输入几个用连字符分隔的数字,然后按enter键”);
var userInput=Console.ReadLine();
var numbers=userInput.Split('-');
var listNumbers=新列表();
var counter1=0;//仅用于故障排除
var counter2=0;//仅用于故障排除
var count=listNumbers.count;
foreach(数字中的字符串编号)
{
var convertedNumber=转换为32(数字);
ListNumber.Add(convertedNumber);
计数器1++;//仅用于故障排除
}
foreach(listNumber中的int listNumber)
{
计数器2++;//仅用于故障排除
Console.WriteLine(listNumber);//仅用于故障排除
}
//只是为了排除故障
Console.WriteLine(--------------”;
WriteLine(“通过从字符串转换到int32并将每个循环添加到列表中的循环计数:”+counter1);
WriteLine(“通过列表本身的循环计数:+counter2”);
Console.WriteLine(“列表中元素的计数:“+Count”);
}
}
}

只有当列表中的元素为零时,才为变量“count”赋值。您声明的本地“count”变量不会在列表增长时自动更新;只有列表上的“Count”属性本身才能执行此操作

您可能需要的不是列表为空时的元素数,而是填充后列表中的元素数,在这种情况下,您需要在将所有元素添加到列表中后获取列表的计数

因此,请删除以下行:

var count = listNumbers.Count;
并在两个foreach循环之后立即添加完全相同的行

或者,由于您只引用该变量一次,您可以完全删除上面的count变量,然后将最后一个Console.WriteLine替换为以下内容:

Console.WriteLine("Count of elements in list: " + listNumbers.Count);

只有当列表中有零个元素时,才为变量“count”赋值。您声明的本地“count”变量不会在列表增长时自动更新;只有列表上的“Count”属性本身才能执行此操作

您可能需要的不是列表为空时的元素数,而是填充后列表中的元素数,在这种情况下,您需要在将所有元素添加到列表中后获取列表的计数

因此,请删除以下行:

var count = listNumbers.Count;
并在两个foreach循环之后立即添加完全相同的行

或者,由于您只引用该变量一次,您可以完全删除上面的count变量,然后将最后一个Console.WriteLine替换为以下内容:

Console.WriteLine("Count of elements in list: " + listNumbers.Count);
简单更改:

Console.WriteLine("Count of elements in list: " + count);

您当前正在统计集合中的项目,然后再添加新项目。要获得更新的计数列表,您需要调用ListNumber。添加项目后,计数功能。

只需更改:

Console.WriteLine("Count of elements in list: " + count);


您当前正在统计集合中的项目,然后再添加新项目。要获得更新的计数列表,您需要调用listNumbers。添加项目后计数功能。

您从未更新过
count
您从未更新过
count
Slaps非常感谢您-我可能花了整整8个小时试图通过研究和故障排除来找出问题所在。Slaps非常感谢您——我花了大概8个小时的时间通过研究和故障排除来找出问题所在。