C# 空引用异常-";从字符串[]到对象[]的协变量数组转换可能导致写入操作时出现运行时异常;

C# 空引用异常-";从字符串[]到对象[]的协变量数组转换可能导致写入操作时出现运行时异常;,c#,nullreferenceexception,covariance,C#,Nullreferenceexception,Covariance,我在获得正确的命令方面有点困难。我有一个字典,dictionary(),我正在尝试添加委托来解析输入控制台的字符串 命令示例: AdminCommands.Add(":activate", new Action<string>(id => stregsystem.GetProductByID(int.Parse(id)).Active = true)); 我将感谢任何帮助 如果AdminCommands或command为空,您将得到异常。警告与此无关。警告告诉您,如果Dyna

我在获得正确的命令方面有点困难。我有一个字典,
dictionary()
,我正在尝试添加委托来解析输入控制台的字符串

命令示例:

AdminCommands.Add(":activate", new Action<string>(id => stregsystem.GetProductByID(int.Parse(id)).Active = true));

我将感谢任何帮助

如果
AdminCommands
command
为空,您将得到异常。警告与此无关。警告告诉您,如果DynamicInvoke试图将长颈鹿写入您提供给它的对象数组中,则该操作将失败,因为该对象数组实际上是一个字符串数组。但首先,DynamicInvoke不会写入,其次,如果它写入,则会出现类型转换错误,而不是空的取消引用错误。如果要消除警告,可以说
input.Skip(1).Cast().ToArray()
,正如knittl所说,这里有些东西是空的。可能是AdminCommands,可能是command,可能是stregsystem,可能是GetValueById返回的值,可能是您没有告诉我们的内容。使用调试器,找出它是什么。您可能能够找出这里的空值
private void ParseCommand(string command)
{
    string[] input = command.Split();

    if (command[0] == ':')
    {
        AdminCommands[input[0]]?.DynamicInvoke(input.Skip(1).ToArray());
    }
....