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()}`");
}
输出:
您目前正在做的是:
- 正在创建一个新数组。
- 在数组中存储字符串元素。
- 那么你在做两件事:
- 正在清除控制台。
- 正在将数组对象写入控制台(不是它的元素)。
您重复点 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' 确定将打印哪个元素,因此在循环的每个循环中,下一个元素将被发送到控制台。
我正在尝试获取要显示的数组的内容,但所发生的只是这个提示
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()}`");
}
输出:
您目前正在做的是:
- 正在创建一个新数组。
- 在数组中存储字符串元素。
- 那么你在做两件事:
- 正在清除控制台。
- 正在将数组对象写入控制台(不是它的元素)。
您重复点 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' 确定将打印哪个元素,因此在循环的每个循环中,下一个元素将被发送到控制台。