1

我已经阅读了有关将 object[] 传递给 params object[] 的主题,但我不知道为什么它不适用于我。

我在一个类中也有这些功能:

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

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

我究竟做错了什么?

4

1 回答 1

8

C#(通常是 .NET)数组是协变的。您可以简单地将 传递string[]object[]参数。

DoSave("save", values.Skip(1).ToArray());

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

string value1 = values[0]; // object -> string, no implicit conversion.

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

于 2009-08-28T16:39:02.897 回答