首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检测方法是否通过委托丢弃参数调用

检测方法是否通过委托丢弃参数调用
EN

Stack Overflow用户
提问于 2019-08-13 16:07:41
回答 1查看 204关注 0票数 0

我正在为我的控制台应用程序制作一个命令系统。有些命令使用"as-is“(如"exitapp"),有些命令需要参数(如”服务器启动ip端口“)。我就是这样做的:

代码语言:javascript
运行
复制
delegate void CommandHandlerMethod(params object[] args);
readonly Dictionary<string, CommandHandlerMethod> commands;

对于不需要参数的方法,我使用这样的丢弃特性:

代码语言:javascript
运行
复制
void ExitAppCommand(params object[] _) { ... }
void StartServerCommand(params object[] args)
{
   // ip = args[0];
   // port = args[1];
}

然后,我循环遍历字典,我想在以下两种情况中做出决定:

  1. 如果命令处理方法放弃参数,那么只需调用它。
  2. 否则,从输入字符串中剪切参数并将其作为args传递。

那么,检测参数丢弃的选项是什么呢?

UDP:这是我真正想要的“伪”:

代码语言:javascript
运行
复制
foreach (KeyValuePair<string, CommandHandlerMethod> cmd in commands)
{
    (input.StartsWith(cmd.Key))
    {
        if (cmd.Value. /*is declared to discard arg */)
            cmd.Value();
        else
            // else cut args and pass them
            cmd.Value(input.Substring(cmd.Key.Length+1).Split(' '));
        break;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2019-08-13 21:15:18

_ in void ExitAppCommand(params object[] _) { ... }不是丢弃_是一个有效的C#标识符。

然而,在下面的代码中,_是一个丢弃物:

代码语言:javascript
运行
复制
public void N(int x)
{
    _ = x.ToString();
    _ = 2 + 3;
}

把它拿出来这里

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57481579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档