14 public class JaggedArray<T> : ISerializationCallbackReceiver {
22 private int[] _lengths;
27 _array =
new T[length][];
35 _array =
new T[_lengths.Length][];
37 for (
int i = 0; i < _lengths.Length; i++) {
38 int length = _lengths[i];
42 _array[i] =
new T[length];
43 Array.Copy(_data, offset, _array[i], 0, length);
52 _lengths =
new int[0];
57 foreach (var child
in _array) {
58 if (child ==
null)
continue;
59 count += child.Length;
63 _lengths =
new int[_array.Length];
65 for (
int i = 0; i < _array.Length; i++) {
66 var child = _array[i];
71 Array.Copy(child, 0, _data, offset, child.Length);
72 _lengths[i] = child.Length;
73 offset += child.Length;
78 public T[]
this[
int index] {
83 _array[index] = value;
88 return jaggedArray._array;
void OnAfterDeserialize()