在c#中将system.array转换为object

sar*_*ake -1 c# casting

我的功能有以下签名

function myfunction(ref object)
Run Code Online (Sandbox Code Playgroud)

我这样使用它

 Array arr = Array.CreateInstance(System.Type.GetType("System.String"), 2);
  arr.SetValue("1", 0);

  myfunction( ref arr);
Run Code Online (Sandbox Code Playgroud)

我正在接受

"无法从'ref System.Array'转换为'ref object'"

我的印象是System.Array是对象...所以我为什么会收到这个错误?对象与Object不同吗?

N_A*_*N_A 5

您遇到的问题是,当一个数组是一个对象时,一个对象不是一个数组,因此在您的函数中,如果您的数组可以作为ref对象传入,则可以为该数组分配任何对象.

编辑:

要解决此问题,请声明一个ref变量来代替数组变量:

Array arr = Array.CreateInstance(System.Type.GetType("System.String"), 2);
arr.SetValue("1", 0);

object referenceObject = arr;

myfunction( ref referenceObject );
Run Code Online (Sandbox Code Playgroud)