C# 拆分Socket接收的下划线分隔字符串后控制台不输出变量值问题
问题根因
你的字符串拆分逻辑本身没有问题,故障是Console.WriteLine的调用方式错误导致的:
C#中Console.WriteLine的多参数重载要求第一个参数为带占位符的格式化字符串,后续参数需和{0}、{1}这类占位符一一对应。你当前写法只给了第一个格式化字符串"individual strings: \n",没有对应的占位符,所以后续所有参数都会被直接忽略,不会输出。
修正方案
你可以任选下面任意一种写法修复打印逻辑:
- 使用格式化占位符写法
Console.WriteLine("individual strings: \nproce0: {0}\nproce1: {1}\nproce2: {2}\nproce3: {3}\nproce4: {4}\nproce5: {5}", proce0, proce1, proce2, proce3, proce4, proce5);
- 使用C# 6+支持的字符串插值(可读性更高,推荐)
Console.WriteLine($"individual strings: \nproce0: {proce0}\nproce1: {proce1}\nproce2: {proce2}\nproce3: {proce3}\nproce4: {proce4}\nproce5: {proce5}");
可选优化
建议在拆分后先校验数组长度,避免客户端发送的字符串格式不符合预期时触发索引越界异常:
string[] Splitdata1 = content.Split('_'); if (Splitdata1.Length >= 6) { string proce0 = Splitdata1[0]; string proce1 = Splitdata1[1]; string proce2 = Splitdata1[2]; string proce3 = Splitdata1[3]; string proce4 = Splitdata1[4]; string proce5 = Splitdata1[5]; // 后续打印逻辑 }
内容的提问来源于stack exchange,提问作者Umer
相关产品推荐
相关产品推荐

