public int GetMemorySize() { int res = BinarySerializeUtils.GetStringMemorySize(Name); res += 1; //IsArray //2 байта - количество значений res += 2; //значения: for (int i = 0; i < _values.Count; i++) { IKeyValue val = _values[i]; res += val.GetMemorySize(); } //2 байта - количество подключей res += 2; //значения: for (int i = 0; i < _keys.Count; i++) { res += _keys[i].GetMemorySize(); } return(res); }
public int GetMemorySize() { int res = 1; //byte for type switch (VariantType) { case EValueType.Bool: return(res + sizeof(bool)); case EValueType.Byte: return(res + sizeof(byte)); case EValueType.Short: return(res + sizeof(short)); case EValueType.UShort: return(res + sizeof(ushort)); case EValueType.Int: return(res + sizeof(int)); case EValueType.UInt: return(res + sizeof(uint)); case EValueType.Long: return(res + sizeof(long)); case EValueType.ULong: return(res + sizeof(ulong)); case EValueType.Float: return(res + sizeof(float)); case EValueType.Double: return(res + sizeof(double)); case EValueType.String: return(res + BinarySerializeUtils.GetStringMemorySize((string)_objref)); } throw new ArgumentException($"Unknow type of value: {VariantType}"); }