C# String.Split创建所有空数组值

C# String.Split创建所有空数组值,c#,arrays,string,C#,Arrays,String,我的代码使用StringBuilder从网络流构建字符串 然后,我将生成的StringBuilder(MyCompleteMessage)转换为一个带有ToString的字符串 在这一点上,字符串是好的 然后我尝试使用.Split()来分隔“~”上的字符串 当我试图用控制台显示结果字符串或将其写入文件时,我会得到:“System.string[]”反复出现 我的代码是: byte[] myReadBuffer = new byte[3000]; StringBuilder myCompleteM

我的代码使用StringBuilder从网络流构建字符串

然后,我将生成的StringBuilder(MyCompleteMessage)转换为一个带有
ToString
的字符串

在这一点上,字符串是好的

然后我尝试使用
.Split()
来分隔“~”上的字符串

当我试图用控制台显示结果字符串或将其写入文件时,我会得到:“System.string[]”反复出现

我的代码是:

byte[] myReadBuffer = new byte[3000];
StringBuilder myCompleteMessage = new StringBuilder();
int numberOfBytesRead = 0;
char[] separatingChars = {'~'};
// Incoming message may be larger than the buffer size.
do
{
    numberOfBytesRead = stream.Read(myReadBuffer, 0, myReadBuffer.Length);

    myCompleteMessage.AppendFormat("{0}", Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead));

}
while (stream.DataAvailable);
string tosep = myCompleteMessage.ToString();

string[] words = tosep.Split(separatingChars);
Console.Write(tosep);

StreamWriter file = File.AppendText("c:\\Users/edegraaf/Desktop/test.txt");
foreach(string i in words)
{
    file.WriteLine(words);
} 
file.Close();
字符串示例:

2017-05-31 19:36:20.143767~24.125C 2017-05-31 19:37:21.075028~30.25C 2017-05-31 19:38:21.953599~23.937C 2017-05-31 19:47:34.447627~23.937C 2017-05-31 19:47:52.717755~23.812C 2017-05-3119:49:27.846434~24.0C 2017-05-3120:01:08.865726~24.125C 2017-06-01 14:38:52.948025~23.375C 2017-06-01 14:39:53.872969~23.187C 2017-06-01 14:41:05.187961~28.625C 2017-06-01 15:01:48.22


有人能告诉我为什么我会得到“
System.String[]
”?

不是写入数组的值,而是尝试使用以下命令将数组本身写入文件:

file.WriteLine(words);
而您需要做的是,为了写入值:

foreach(string i in words)
{
    file.WriteLine(i);
} 

将file.writeline(words)更改为file.writeline(i)。它可以工作

file.WriteLine(words);应为file.WriteLine(i);好吧,这很明显,我现在觉得自己很愚蠢。谢谢你的迅速回复。