You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 02:54:04