【发布时间】:2017-05-22 05:07:48
【问题描述】:
我有一个非常简单的代码:
using System;
using System.Linq;
using System.Windows;
using System.IO;
namespace _3DPrinter_Test1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
foreach (string CurrentLine_Raw in File.ReadAllLines(
"@D:\3Dprinter\TestObject1.gcode"))
{
string[] CurrentLine_Array =
CurrentLine_Raw.Select(c => c.ToString()).ToArray();
TextBox_Test.Text = CurrentLine_Array[0];
}
}
}
}
线
TextBox_Test.Text = CurrentLine_Array[0];
给我一个 IndexOutOfRangeException。
在我看来是因为这条线:
string[] CurrentLine_Array = CurrentLine_Raw.Select(c => c.ToString()).ToArray();
但是当我用这一行替换上面的内容时:
string[] CurrentLine_Array = { "Hello World" };
然后我可以在我的文本框中阅读 Hello World。
从 string 到 string[] 的转换我做错了吗?
【问题讨论】:
-
您在
Select电话中想做什么?如果文件中的某些行没有任何字符,则会出现异常。检查CurrentLine_Array.Length以查看数组中是否有任何内容。 -
好的,这是我的错...我的 .gcode 文件中的一行根本没有包含任何字符。我只是将整个循环放入 try{} 和 catch{} 函数中,它现在可以工作了 :)
-
您不需要...在这里捕获异常!只需检查数组的长度是否大于0!
-
当然,你是对的。
-
空行仍然是一行。只是一个
\n字符。但返回的字符串将为空。顺便说一句,您键入的内容会将行中的每个字符转换为字符串。也许您正在寻找Split()?即使那样,该循环替换文本框的内容。只有最后一行的内容对用户可见。您确定吗?那为什么不直接跳到最后呢?
标签: c# arrays string visual-studio type-conversion