簡體   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