当尝试运行此代码时,我们遇到了一个错误。理想情况下,更改e.Message
的数据类型从string
到double
或float array
。请帮助我们理解这个错误的含义,或者如何调试代码。
我们还尝试了float.Parse(e.Message, CultureInfo.InvariantCulture.NumberFormat);
方法,但也出现了错误。
private void ClientReceiveData(object sender, ConnectedClient.NetDataEventArgs e)
{
if (string.IsNullOrEmpty(e.Message) == false)
{
if (e.ID == 0)
{
//float.Parse(e.Message, CultureInfo.InvariantCulture.NumberFormat);
Array.ConvertAll(e.Message.Split(','), Double.Parse);
Trace.WriteLine(String.Join(Environment.NewLine, e.Message));
}
if (e.ID == 1)
{
//float.Parse(e.Message, CultureInfo.InvariantCulture.NumberFormat);
Array.ConvertAll(e.Message.Split(','), Double.Parse);
Trace.WriteLine(String.Join(Environment.NewLine, e.Message));
}
}
输入 (e.Message):
0.0160163, -0.3207418, -0.2747217, 0.9856872, -0.3428816, 0.02380935, 0.8472792, -0.3562718, 0.3080477, 0.6931204, -0.4135765, 0.2335226, 0.6617407, -0.2861188, 0.278595, 0.685502, -0.3337714, 0.06315409, 0.5661756, -0.5338272, 0.1274863, 0.6014508, -0.6020046, 0.149146, 0.6165056, -0.2287867, 0.108688, 0.753313, -0.2801398, 0.1555204, 0.5711947, -0.4046459, 0.3197014, 0.6477473, -0.4134837, 0.3147845, 0.6426268, -0.3393434, -0.242843, 0.9667573, -0.3945386, -0.2511228, 0.5462032, -0.4459318, -0.2613428, 0.2010812, -0.43355, -0.2804166, 0.09203719, -0.2818186, -0.2890762, 0.9426621, -0.2850094, -0.2625419, 0.5789056, -0.2990395, -0.2414854, 0.1805503, -0.2872439, -0.2554213, 0.06843466, -0.3543724, 0.2399589, 0.7335942, -0.5984071, 0.1476627, 0.6094998, -0.5848852, 0.1458522, 0.6007382, -0.4560334, 0.3629844, 0.6141819, -0.4130909, 0.2523528, 0.57725,
e.Message
的全部内容以纯文本形式粘贴。里面可能有一些不被接受的内容,而我们无法看到全部内容。 - Paul AbbottConvertAll
方法会返回一个新数组,如果你没有将输出结果赋值给任何变量,它就没有什么用处了。 - Crowcodersplit
函数时出现了一个空条目。使用RemoveEmptyEntries
选项可以解决这个问题。这是为什么我们不建议使用错误信息的截图作为提问方式的好例子。 - Paul AbbottStringSplitOptions.RemoveEmptyEntries
。 - D Stanley