1.数组本质是什么?
我理解数组是从Array类派生的类,那么能否不用 T[]的语法,这个T[]究竟是什么类?
比如我想写类似  class MyClass : T[]  这种代码怎么写
2.如何对数组进行运算符重载
因为无法自行实现一个 T[]类,所以不知道对T[]对象进行运算符重载,比如我想对两个数组进行相加应该怎么写重载代码

解决方案 »

  1.   

    所有数组都隐含地继承自Array,除了T[]这种语法外,还可以用Array.CreateInstance创建数组但只有系统和编译器能够从 Array 类显式派生,
    又因为,运算符重载的参数必须包含声明类型,所以,没有办法进行运算符重载。只能用扩展方法
        public static class AddArrayClass {
            public static int[] Add(this int[] a, int[] b) {
                ...
            }
        }
      

  2.   

    数组的本质是一段连续的具有同类型的数据的内存空间,你要继承数组不如继承 Lits<T> ,普遍意义上数组相加是和 string 相加是类似,是串联,用一段新的大的内存空间来容纳原先两者的数据,而不像 int 那样占用内存不变的,string 用得多就给了它 + ,但连续 + 又会产生很多碎片浪费内存,所以数组类要相加最好是根据实际需要写方法。