using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace testbyte
{
    class Program
    {
        static void Main(string[] args)
        {
            byte[] test1 = new byte[10];
            byte[] test2 = new byte[10];            test1[0] = 0x30;
            test2[0] = 0x22;            byte result = test1[0] + test2[0];
        }
    }
}
竟然有这样错误,why???
========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========
------ Build started: Project: testbyte, Configuration: Debug Any CPU ------
C:\WINDOWS\Microsoft.NET\Framework\v3.5\Csc.exe /noconfig /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll" /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\Debug\testbyte.exe /target:exe Program.cs Properties\AssemblyInfo.cs
C:\Documents and Settings\z06189\My Documents\Visual Studio 2008\Projects\testbyte\testbyte\Program.cs(18,27): error CS0266: Cannot implicitly convert type 'int' to 'byte'. An explicit conversion exists (are you missing a cast?)Compile complete -- 1 errors, 0 warnings
========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========

解决方案 »

  1.   

    哦  上面不对报错原因是 赋值运算符右侧的算术表达式在默认情况下的计算结果为 int 类型。
      

  2.   

    byte在做运算的时候ms要转换成int
    所有byte+byte的结果是int
      

  3.   

    是有点奇怪,int+int也有可能不在int的范围啊,为什么int能通过
      

  4.   

    难道说赋值到左边的时候,默认都是int?
      

  5.   

    强制转换没问题byte result = (byte)(test1[0] + test2[0]);
      

  6.   


    是byte和byte的和,的默认结果是int型的。
      

  7.   

    应该是和被强制转换成int了,谢谢大家