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 []),因此无效的转换异常.
我究竟做错了什么?
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)
请发布导致问题的确切代码.