将对象[]传递给params对象[]不工作

And*_*nna 1 c# casting object params

我已经阅读了关于将对象[]传递给params对象[]的主题,但我不知道为什么它不能与我合作.

我在课堂上也有这些功能:

...
    private void CallbackEvent(object source, CallbackEvetArgs e) { // Some event with e.Data as string
    ...
        string[] values = e.Data.Split('|');
        DoSave("save", values.Skip(1).Cast<object>().ToArray());
    ...
    }
...
    public void DoSave(string action, params object[] values) {
    ...
        string value1 = values[0];
    ...
    }
...
Run Code Online (Sandbox Code Playgroud)

但是,value1不是接收value1中的字符串,而是接收整个数组(string []),因此无效的转换异常.

我究竟做错了什么?

Meh*_*ari 8

C#(通常是.NET)数组是协变的.您只需将参数传递string[]object[]参数即可.

DoSave("save", values.Skip(1).ToArray());
Run Code Online (Sandbox Code Playgroud)

您发布的代码绝对不是您测试的确切代码.Cast<object>也应该正常工作.这行不应该编译:

string value1 = values[0]; // object -> string, no implicit conversion.
Run Code Online (Sandbox Code Playgroud)

请发布导致问题的确切代码.