Class BSONArray
Array of BSONValue items. Used in binary serialization while data transfer data between client and server.
It implements List like behavior based on shared array pool instead of backing List for better memory utilization.
If we use a List then it will never drop in Capacity, eventually all lists in BSONArray will grow to match bigger capacity needed for often used arrays.
I.e. if we transfer BSON array with size 100 once per second and use 100 BSONArray objects then:
- with lists every time when BSONArray created (actually rented from pool) it may be a different BSONArray
and it will be filled with 100 items even if all other BSON arrays we use need just 2-10 items. Now we have 100x100 = 10 000 capacity allocated and never released.
- with array pools it will use same array from shared pool every time when BSONArray need to accept 100 items (assuming we don't have two BSON arrays of that size in parallel).
All other arrays not exceed 10 items so we have just 100 + 99x10 = 1 090 capacity allocated instead of 10 000.
Inheritance
System.Object
BSONArray
Implements
System.Collections.Generic.ICollection<
BSONValue>
System.Collections.Generic.IEnumerable<
BSONValue>
System.Collections.IEnumerable
Assembly: Eco.Shared.dll
Syntax
public sealed class BSONArray : BSONValue<BSONArray>, IEquatable<BSONValue>, IList<BSONValue>, ICollection<BSONValue>, IEnumerable<BSONValue>, IEnumerable
Properties
ArrayValue
Declaration
public override BSONArray ArrayValue { get; }
Property Value
Overrides
Count
Declaration
public int Count { get; }
Property Value
Type |
Description |
System.Int32 |
|
IsReadOnly
Declaration
public bool IsReadOnly { get; }
Property Value
Type |
Description |
System.Boolean |
|
Item[Int32]
Declaration
public BSONValue this[int index] { get; set; }
Parameters
Type |
Name |
Description |
System.Int32 |
index |
|
Property Value
New
Declaration
public static BSONArray New { get; }
Property Value
Methods
Add(BSONValue)
Declaration
public void Add(BSONValue item)
Parameters
AddRange(IEnumerable<BSONValue>)
Declaration
public void AddRange(IEnumerable<BSONValue> items)
Parameters
Type |
Name |
Description |
System.Collections.Generic.IEnumerable<BSONValue> |
items |
|
AddSpan(ReadOnlySpan<BSONValue>)
Adds new items form span
.
Declaration
public void AddSpan(ReadOnlySpan<BSONValue> span)
Parameters
Type |
Name |
Description |
System.ReadOnlySpan<BSONValue> |
span |
|
AsSpan()
Declaration
public ReadOnlySpan<BSONValue> AsSpan()
Returns
Type |
Description |
System.ReadOnlySpan<BSONValue> |
|
Clear()
Declaration
ClearNoRecycle()
Clears BSONArray without recycling it's items. May be useful when array copied to another BSONArray to avoid recycling items twice.
Declaration
public void ClearNoRecycle()
Contains(BSONValue)
Declaration
public bool Contains(BSONValue item)
Parameters
Returns
Type |
Description |
System.Boolean |
|
CopyTo(BSONValue[], Int32)
Declaration
public void CopyTo(BSONValue[] array, int arrayIndex)
Parameters
Type |
Name |
Description |
BSONValue[] |
array |
|
System.Int32 |
arrayIndex |
|
Declaration
public static BSONArray FromEnumerable(IEnumerable<LocString> values)
Parameters
Type |
Name |
Description |
System.Collections.Generic.IEnumerable<LocString> |
values |
|
Returns
Declaration
public static BSONArray FromEnumerable(IEnumerable<Quaternion> values)
Parameters
Type |
Name |
Description |
System.Collections.Generic.IEnumerable<Quaternion> |
values |
|
Returns
Declaration
public static BSONArray FromEnumerable(IEnumerable<Vector2i> values)
Parameters
Type |
Name |
Description |
System.Collections.Generic.IEnumerable<Vector2i> |
values |
|
Returns
Declaration
public static BSONArray FromEnumerable(IEnumerable<Vector3i> values)
Parameters
Type |
Name |
Description |
System.Collections.Generic.IEnumerable<Vector3i> |
values |
|
Returns
Declaration
public static BSONArray FromEnumerable(IEnumerable<BSONValue> values)
Parameters
Type |
Name |
Description |
System.Collections.Generic.IEnumerable<BSONValue> |
values |
|
Returns
Declaration
public static BSONArray FromEnumerable(IEnumerable<Color> values)
Parameters
Type |
Name |
Description |
System.Collections.Generic.IEnumerable<Color> |
values |
|
Returns
Declaration
public static BSONArray FromEnumerable(IEnumerable<bool> values)
Parameters
Type |
Name |
Description |
System.Collections.Generic.IEnumerable<System.Boolean> |
values |
|
Returns
Declaration
public static BSONArray FromEnumerable(IEnumerable<byte> values)
Parameters
Type |
Name |
Description |
System.Collections.Generic.IEnumerable<System.Byte> |
values |
|
Returns
Declaration
public static BSONArray FromEnumerable(IEnumerable<DateTime> values)
Parameters
Type |
Name |
Description |
System.Collections.Generic.IEnumerable<System.DateTime> |
values |
|
Returns
Declaration
public static BSONArray FromEnumerable(IEnumerable<double> values)
Parameters
Type |
Name |
Description |
System.Collections.Generic.IEnumerable<System.Double> |
values |
|
Returns
Declaration
public static BSONArray FromEnumerable(IEnumerable<Guid> values)
Parameters
Type |
Name |
Description |
System.Collections.Generic.IEnumerable<System.Guid> |
values |
|
Returns
Declaration
public static BSONArray FromEnumerable(IEnumerable<int> values)
Parameters
Type |
Name |
Description |
System.Collections.Generic.IEnumerable<System.Int32> |
values |
|
Returns
Declaration
public static BSONArray FromEnumerable(IEnumerable<long> values)
Parameters
Type |
Name |
Description |
System.Collections.Generic.IEnumerable<System.Int64> |
values |
|
Returns
Declaration
public static BSONArray FromEnumerable(IEnumerable<float> values)
Parameters
Type |
Name |
Description |
System.Collections.Generic.IEnumerable<System.Single> |
values |
|
Returns
Declaration
public static BSONArray FromEnumerable(IEnumerable<string> values)
Parameters
Type |
Name |
Description |
System.Collections.Generic.IEnumerable<System.String> |
values |
|
Returns
GetEnumerator()
Declaration
public ArraySegment<BSONValue>.Enumerator GetEnumerator()
Returns
Type |
Description |
System.ArraySegment.Enumerator<> |
|
IndexOf(BSONValue)
Declaration
public int IndexOf(BSONValue item)
Parameters
Returns
Type |
Description |
System.Int32 |
|
Insert(Int32, BSONValue)
Declaration
public void Insert(int index, BSONValue item)
Parameters
Type |
Name |
Description |
System.Int32 |
index |
|
BSONValue |
item |
|
Remove(BSONValue)
Declaration
public bool Remove(BSONValue item)
Parameters
Returns
Type |
Description |
System.Boolean |
|
RemoveAt(Int32)
Declaration
public void RemoveAt(int index)
Parameters
Type |
Name |
Description |
System.Int32 |
index |
|
Declaration
public static BSONArray SerializeFromEnumerable<T>(IEnumerable<T> values)
Parameters
Type |
Name |
Description |
System.Collections.Generic.IEnumerable<T> |
values |
|
Returns
Type Parameters
ToArrayVector2i()
Declaration
public Vector2i[] ToArrayVector2i()
Returns
ToStringIndented(Int32, HashSet<BSONValue>)
Declaration
protected override string ToStringIndented(int indentLevel, HashSet<BSONValue> visited)
Parameters
Type |
Name |
Description |
System.Int32 |
indentLevel |
|
System.Collections.Generic.HashSet<BSONValue> |
visited |
|
Returns
Type |
Description |
System.String |
|
Overrides
Declaration
protected override bool TryPerformRecycle()
Returns
Type |
Description |
System.Boolean |
|
Overrides
Eco.Shared.Serialization.BSONValue<Eco.Shared.Serialization.BSONArray>.TryPerformRecycle()
Implements
System.IEquatable<>
System.Collections.Generic.IList<>
System.Collections.Generic.ICollection<>
System.Collections.Generic.IEnumerable<>
System.Collections.IEnumerable
Extension Methods