C# Canvas绘图时命令参数解析正常仅首个if分支生效问题求助
问题原因及修复方案
核心原因
你代码中的问题是字符串大小写敏感匹配失败:C#默认的string.Equals()方法是区分大小写的,你首个分支判断的是全小写的line,其余分支判断的都是首字母大写的格式(如Rect、Circle等),如果从文本框读取的命令大小写和分支内写的字符串不完全一致,就会匹配失败走不到对应分支。
修复方案
方案1:忽略大小写匹配(推荐)
给Equals方法增加StringComparison.OrdinalIgnoreCase参数,匹配时忽略大小写,兼容不同的输入大小写习惯:
void Commands(string Command, int X, int Y) { if (Command.Equals("line", StringComparison.OrdinalIgnoreCase)) { MyCanvas.DrawLine(X, Y); } else if (Command.Equals("Rect", StringComparison.OrdinalIgnoreCase)) { MyCanvas.Rectangle(X, Y); } else if (Command.Equals("Reset", StringComparison.OrdinalIgnoreCase)) { MyCanvas.Reset(); } else if (Command.Equals("Circle", StringComparison.OrdinalIgnoreCase)) { MyCanvas.DrawCircle(X); } else if (Command.Equals("Tri", StringComparison.OrdinalIgnoreCase)) { MyCanvas.DrawTriangle(X, Y); } else if (Command.Equals("Red", StringComparison.OrdinalIgnoreCase)) { MyCanvas.Red(); } // 新增默认分支,打印未识别命令方便排查问题 else { System.Diagnostics.Debug.WriteLine($"未识别的命令:{Command}"); } }
方案2:严格统一大小写
如果业务要求命令必须严格区分大小写,你可以:
- 先加调试代码输出实际传入的
Command参数值,确认文本框读取到的命令格式 - 将所有分支的判断字符串和输入命令的大小写统一,比如全部改为全小写,同时要求输入也遵循对应大小写规范。
内容的提问来源于stack exchange,提问作者IronMike
相关产品推荐
相关产品推荐

