C# 为什么';";对象[]”;工作

C# 为什么';";对象[]”;工作,c#,arrays,object,C#,Arrays,Object,我以为object指的是所有数据类型,但由于某种原因它不起作用 我做了一个tostringaray方法,可以将任何类型的数组转换为字符串数组,string[],我这样写的,它可以转换任何类型: public static string[] ToStringArray(this object[] buffer) { //code here. } 但问题是,如果我有这样一个数组: byte[] x = new byte[] { 1, 2, 3, 4, 5 }; 然后试着做: string[] s

我以为object指的是所有数据类型,但由于某种原因它不起作用

我做了一个
tostringaray
方法,可以将任何类型的数组转换为字符串数组,
string[]
,我这样写的,它可以转换任何类型:

public static string[] ToStringArray(this object[] buffer)
{
//code here.
}
但问题是,如果我有这样一个数组:

byte[] x = new byte[] { 1, 2, 3, 4, 5 };
然后试着做:

string[] s = x.ToStringArray();
我得到一个错误,它说
字节[]不包含对字符串的定义

我该如何解决这个问题,或者我做错了什么?

它们之间没有隐式转换,数组差异技巧只适用于引用类型的数组<代码>字节[]
不符合此条件

您可能希望改用泛型:

public static string[] ToStringArray<T>(this T[] buffer)
{
//code here.
}
publicstaticstring[]tostringray(此T[]缓冲区)
{
//代码在这里。
}
它们之间没有隐式转换,数组方差技巧仅适用于引用类型的数组<代码>字节[]不符合此条件

您可能希望改用泛型:

public static string[] ToStringArray<T>(this T[] buffer)
{
//code here.
}
publicstaticstring[]tostringray(此T[]缓冲区)
{
//代码在这里。
}

@CodingYoshi一个引用类型的数组可以被视为另一个引用类型的数组,如果它们之间存在保留引用的转换;最常见的情况是,这意味着
object[]
可以通过强制转换与任何
SomeClass[]
互换。这是不寻常的,因为这不是一个可靠的转换-您只能将
DbConnection
转换为
SomeClass[]
,因为您认为它是一个
对象[]
。对于泛型,in/
out
方差形式化了安全规则。@CodingYoshi一个引用类型的数组可以被视为另一个引用类型的数组,如果它们之间存在保留引用的转换;最常见的情况是,这意味着
object[]
可以通过强制转换与任何
SomeClass[]
互换。这是不寻常的,因为这不是一个可靠的转换-您只能将
DbConnection
转换为
SomeClass[]
,因为您认为它是一个
对象[]
。对于泛型,in/
out
方差形式化了安全规则。