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());
}
....