編譯器錯誤 CS0826
更新:2007 年 11 月
錯誤訊息
找不到隱含型別陣列的最佳型別。
陣列元素的型別必須全部相同,或是可以根據編譯器 (Compiler) 使用的型別推斷規則,隱含地轉換為相同型別。最佳型別必須是陣列運算式中現有的其中一種型別。元素將不會轉換為新的型別,例如 object。如果是隱含型別陣列,則編譯器必須根據指派給陣列的元素型別來推斷陣列型別。
若要更正這個錯誤
指定陣列的明確型別。
所有陣列元素都指定為相同型別。
針對那些可能會造成問題的元素提供明確轉換 (Cast)。
範例
因為陣列元素的型別並不是都相同,而且編譯器的型別推斷邏輯找不到單一最佳型別,所以下列程式碼會產生 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;
}
}