C#中如何将传感器坐标组合为指定格式变量并解决格式异常
问题分析
你遇到的FormatException是因为int.Parse只能解析纯数字字符串,而"3,1"这种带逗号的格式不是合法整数,所以解析失败。
正确实现方式
根据实际需求,有几种不同的解决方案:
1. 仅需字符串格式(用于调试/展示)
如果只是要得到"X,Y"格式的字符串用于输出或存储,直接赋值字符串即可,不需要转成int:
// 用字符串插值更简洁易读 string debugVariable = $"{(int)IdkRightSensor.X},{(int)IdkRightSensor.Y}"; string debugVariable2 = $"{(int)IdkLeftSensor.X},{(int)IdkLeftSensor.Y}";
2. 需要保留数值可操作性
如果后续还要对X、Y坐标进行计算,不要用字符串存储,推荐用元组或自定义结构体:
元组方式(快速实现)
// 定义带命名的元组,直接存储X、Y数值 (int X, int Y) debugVariable = ((int)IdkRightSensor.X, (int)IdkRightSensor.Y); (int X, int Y) debugVariable2 = ((int)IdkLeftSensor.X, (int)IdkLeftSensor.Y); // 后续使用数值:debugVariable.X、debugVariable.Y // 需要输出字符串格式时: string coordStr = $"{debugVariable.X},{debugVariable.Y}";
自定义结构体(规范场景)
如果需要更多扩展功能(比如重写ToString、添加验证逻辑),可以定义结构体:
public struct SensorCoordinate { public int X { get; set; } public int Y { get; set; } // 自动返回"X,Y"格式的字符串 public override string ToString() { return $"{X},{Y}"; } } // 使用示例 SensorCoordinate debugVariable = new SensorCoordinate { X = (int)IdkRightSensor.X, Y = (int)IdkRightSensor.Y }; // 直接输出就会得到"3,1"格式 Console.WriteLine(debugVariable);
3. 从"X,Y"字符串解析回数值(如果需要)
如果已经有了"3,1"格式的字符串,要拆分成X、Y整数,需要手动拆分后解析:
string coordStr = $"{(int)IdkRightSensor.X},{(int)IdkRightSensor.Y}"; string[] coordParts = coordStr.Split(','); // 用TryParse避免格式错误导致崩溃 if (coordParts.Length == 2 && int.TryParse(coordParts[0], out int x) && int.TryParse(coordParts[1], out int y)) { // 成功获取x和y,可在此处使用 }
内容的提问来源于stack exchange,提问作者Duskkitte
相关产品推荐
相关产品推荐

