Compiler Error CS0826
找不到隐式类型数组的最佳类型。
数组元素都必须为同一类型,或者可根据编译器所使用的类型推理规则隐式转换为同一类型。最佳类型必须为数组表达式中的类型之一。元素不会转换为诸如 object 之类的新类型。对于隐式类型的数组,编译器必须根据为其分配的元素类型推断该数组的类型。
更正此错误
为该数组指定显式类型。
为所有数组元素指定同一类型。
为可能会导致问题的那些元素提供显式强制转换。
下面的代码生成 CS0826,因为数组元素的类型不完全相同,并且编译器的类型推理逻辑未找到一个最佳类型:
// cs0826.cs
public class C
{
public static int Main()
{
var x = new[] { 1, "str" }; // CS0826
char c = 'c';
short s1 = 0;
short s2 = -0;
short s3 = 1;
short s4 = -1;
var array1 = new[] { s1, s2, s3, s4, c, '1' }; // CS0826
return 1;
}
}