在.net(C# or vb.net)中连接字符串可以用+号重载, 如 string s =  "anne" + "rose";结果 s 值为"annerose", 类似的, 要在byte[] 类型实现同样的合并功能, 如byte[] b = {'a','n'} + {'n','e'}; 结果b的值为{'a','n','n','e'}. 请写出实现此重载功能的代码, 若不能请说明理由.

解决方案 »

  1.   

    我想了一个晚上,没想到方法可以实现重载操作符。因为Byte是密封的,不能被继承。
    而操作符重载应该在内部定义。
    知识有限,恳请高人解答。
      

  2.   

    public static byte[] operator +(byte[] c1, byte[] c2)
    {
    byte[] c3=new byte[c1.Length+c2.Length];
    c1.CopyTo(c3,0);
    c2.CopyTo(c3,c1.Length);
    return c3;
    } 没地方加  提示错误
      

  3.   

    哎~~~~,睡不着了,
    重载运算符必须是静态的,可能只能用类或结构来操作.
    程序小 ,就贴个完整的吧,
    using System;
    namespace zk
    {
    public class OperatorTest
    {
    byte[] _b;
    public OperatorTest(byte[] bytes)
    {
    _b = bytes;
    }
    public static OperatorTest operator +(OperatorTest t1, OperatorTest t2)
    {
    byte[] b1 = new byte[t1._b.Length + t2._b.Length];
    t1._b.CopyTo(b1,0);
    t2._b.CopyTo(b1,t1._b.Length);
    return new OperatorTest(b1);
    }
    public byte[] GetBytes()
    {
    return _b;
    }
    }
    public class OperatorDemo
    {
    public static void Main()
    {
    byte[] b1 = {1,2,3,4,5};
    byte[] b2 = {6,7};
    string s = null;
    OperatorTest t1 = new OperatorTest(b1);
    OperatorTest t2 = new OperatorTest(b2);
    OperatorTest t3 = t1 + t2;
         foreach (byte b in t3.GetBytes())
    {
    s += b.ToString("") + ",";
    }
    System.Windows.Forms.MessageBox.Show(s.Substring(0,s.Length-1));
    }
    }
    }
    //看卡通了哈..
      

  4.   

    em...
    楼上的给了个很好的启示
    我太死脑筋了。。
    老想着实现byte[]和byte[]笔直加。。
    结果想从Byte里继承出有重载的结构
    钻死角了
      

  5.   

    谢谢大家的帮助我很赞同redwolf_123(雨恨云愁) 的观点
    因为Byte是密封的,不能被继承。
    而操作符重载应该在内部定义。但是这是笔试题不知道他们道底想考什么呵呵
    还是谢谢大家!!