繁体   English   中英

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

[英]Detect if method called via delegate discards argument

我正在为控制台应用程序创建命令系统。 有些命令按原样使用(例如“ exitapp”),有些则需要参数(例如“ server start ip port ”)。 这是我的做法:

delegate void CommandHandlerMethod(params object[] args);
readonly Dictionary<string, CommandHandlerMethod> commands;

对于不需要参数的方法,我使用如下丢弃功能:

void ExitAppCommand(params object[] _) { ... }
void StartServerCommand(params object[] args)
{
   // ip = args[0];
   // port = args[1];
}

然后,我只遍历字典,我想在两种情况之间做出决定:
1.如果命令处理方法放弃了参数,则只需调用它
2.否则从输入字符串中删除参数并将其作为args传递

那么检测自变量丢弃的选项是什么?

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

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;
    }
}

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

但是,在以下代码中, _是一个丢弃符:

public void N(int x)
{
    _ = x.ToString();
    _ = 2 + 3;
}

把它放在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM