C#中的数组问题

Array Trouble in C#

我正在尝试获取要显示的数组的内容,但所发生的只是这个提示

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] values = { "This", "That", "The Other Thing" };
            foreach (var item in values)
            {
                Console.Clear();
                Console.WriteLine(values);
            }

我做错了什么?

现在你要打印的是数组本身,当你想打印数组中的项目时。

namespace ConsoleApp
    {
        class Program
        {
            static void Main(string[] args)
            {
                string[] values = { "This", "That", "The Other Thing" };
                foreach (var item in values)
                {
                    Console.Clear();
                    Console.WriteLine(item);
                }
   foreach (var item in values)
        {

            Console.WriteLine(item );
        }

打印 item,而不是 values

// Clear once, not before each output 
Console.Clear();

// print item, not entire array 
foreach (var item in values)
  Console.WriteLine(item);

如果您想一次性打印出整个数组,请借助string.Join:

Console.Clear();
Console.Write(string.Join(Environment.NewLine, values));    

对深入剖析我们正在做的事情没有什么帮助:

object[] values = { "This", "That", "The Other Thing", 1, 2, 1.0f };
foreach (var item in values)
{
    Console.WriteLine($"I am printing `{item}` from `{values}` which is of type `{item.GetType()}`");
}

输出:

您目前正在做的是:

  1. 正在创建一个新数组。
  2. 在数组中存储字符串元素。
  3. 那么你在做两件事:
    • 正在清除控制台。
    • 正在将数组对象写入控制台(不是它的元素)。

您重复点 3 的次数等于数组中元素的数量。所以如果你有 5 个元素,你只是清空控制台,然后将数组对象写入控制台 5 次。

更好的方法如下:

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] values = { "This", "That", "The Other Thing" };
            Console.Clear();
            foreach (var item in values)
            {
                Console.WriteLine(item);
            }

这将清除控制台,然后将数组中包含的每个字符串元素写入控制台 window,每行一个元素。

值得指出的是,与 for 循环(see here 了解详情)相比,foreach 循环通常更昂贵 memory-wise。要使用 for 循环编写此代码,您可以执行以下操作:

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] values = { "This", "That", "The Other Thing" };
            Console.Clear();
            for (int i = 0; i < values.Length; i++)
            {
                Console.WriteLine(values[i]);
            }

整数 'i' 确定将打印哪个元素,因此在循环的每个循环中,下一个元素将被发送到控制台。