Table of Contents

BencodeArray Class

Definition

Namespace
Bodu.Text.Bencode.Nodes
Assembly
Bodu.Text.Bencode.dll
Package
Bodu.Text.Bencode 1.0.0
Source
BencodeArray.cs

Represents a mutable Bencode (BEP 3) list as an ordered, index-addressable collection of child nodes.

public sealed class BencodeArray : BencodeNode, IList<BencodeNode?>, ICollection<BencodeNode?>, IEnumerable<BencodeNode?>, IEnumerable
Inheritance
BencodeArray
Implements
Inherited Members
Extension Methods

Remarks

Elements are kept in insertion order, which is also the order in which they are serialized. An element may be null in memory, but a list containing a null element cannot be written because Bencode has no null token. Adding a node that already belongs to another container throws an InvalidOperationException; removing or replacing an element detaches it, clearing its Parent so it can be added to another container.

var files = new BencodeArray(
    BencodeValue.Create("a.txt"),
    BencodeValue.Create("b.txt"));
files.Add(BencodeValue.Create("c.txt"));

var root = new BencodeObject { ["files"] = files };
byte[] encoded = root.ToUtf8Bytes();   // d5:filesl5:a.txt5:b.txt5:c.txtee

Constructors

BencodeArray()

Initializes a new instance of the BencodeArray class that is empty.

public BencodeArray()

BencodeArray(params BencodeNode?[])

Initializes a new instance of the BencodeArray class containing the supplied items in order.

public BencodeArray(params BencodeNode?[] items)

Parameters

items BencodeNode[]

The initial elements.

Exceptions

ArgumentNullException

Thrown when items is null.

InvalidOperationException

Thrown when an element already belongs to another container.

Properties

Count

Gets the number of elements contained in the ICollection<T>.

public int Count { get; }

Property Value

int

The number of elements contained in the ICollection<T>.

IsReadOnly

Gets a value indicating whether the ICollection<T> is read-only.

public bool IsReadOnly { get; }

Property Value

bool

true if the ICollection<T> is read-only; otherwise, false.

this[int]

Gets or sets the element at the specified index.

public BencodeNode? this[int index] { get; set; }

Parameters

index int

The zero-based index of the element.

Property Value

BencodeNode

The element at index.

Remarks

Assigning over an existing element detaches the replaced node, clearing its Parent.

Exceptions

ArgumentOutOfRangeException

Thrown when index is outside the bounds of the list.

InvalidOperationException

Thrown when the assigned node already belongs to another container.

Methods

Add(BencodeNode?)

Adds an item to the ICollection<T>.

public void Add(BencodeNode? item)

Parameters

item BencodeNode

The object to add to the ICollection<T>.

Exceptions

NotSupportedException

The ICollection<T> is read-only.

Clear()

Removes all items from the ICollection<T>.

public void Clear()

Exceptions

NotSupportedException

The ICollection<T> is read-only.

Contains(BencodeNode?)

Determines whether the ICollection<T> contains a specific value.

public bool Contains(BencodeNode? item)

Parameters

item BencodeNode

The object to locate in the ICollection<T>.

Returns

bool

true if item is found in the ICollection<T>; otherwise, false.

CopyTo(BencodeNode?[], int)

Copies the elements of the ICollection<T> to an Array, starting at a particular Array index.

public void CopyTo(BencodeNode?[] array, int arrayIndex)

Parameters

array BencodeNode[]

The one-dimensional Array that is the destination of the elements copied from ICollection<T>. The Array must have zero-based indexing.

arrayIndex int

The zero-based index in array at which copying begins.

Exceptions

ArgumentNullException

array is null.

ArgumentOutOfRangeException

arrayIndex is less than 0.

ArgumentException

The number of elements in the source ICollection<T> is greater than the available space from arrayIndex to the end of the destination array.

DeepClone()

Creates a deep copy of this node and its entire subtree.

public override BencodeNode DeepClone()

Returns

BencodeNode

An independent clone with no parent.

GetEnumerator()

Returns an enumerator that iterates through the collection.

public IEnumerator<BencodeNode?> GetEnumerator()

Returns

IEnumerator<BencodeNode>

An enumerator that can be used to iterate through the collection.

GetValueKind()

Gets the kind of value this node represents.

public override BencodeValueKind GetValueKind()

Returns

BencodeValueKind

The BencodeValueKind of this node.

IndexOf(BencodeNode?)

Determines the index of a specific item in the IList<T>.

public int IndexOf(BencodeNode? item)

Parameters

item BencodeNode

The object to locate in the IList<T>.

Returns

int

The index of item if found in the list; otherwise, -1.

Insert(int, BencodeNode?)

Inserts an item to the IList<T> at the specified index.

public void Insert(int index, BencodeNode? item)

Parameters

index int

The zero-based index at which item should be inserted.

item BencodeNode

The object to insert into the IList<T>.

Exceptions

ArgumentOutOfRangeException

index is not a valid index in the IList<T>.

NotSupportedException

The IList<T> is read-only.

Remove(BencodeNode?)

Removes the first occurrence of a specific object from the ICollection<T>.

public bool Remove(BencodeNode? item)

Parameters

item BencodeNode

The object to remove from the ICollection<T>.

Returns

bool

true if item was successfully removed from the ICollection<T>; otherwise, false. This method also returns false if item is not found in the original ICollection<T>.

Exceptions

NotSupportedException

The ICollection<T> is read-only.

RemoveAt(int)

Removes the IList<T> item at the specified index.

public void RemoveAt(int index)

Parameters

index int

The zero-based index of the item to remove.

Exceptions

ArgumentOutOfRangeException

index is not a valid index in the IList<T>.

NotSupportedException

The IList<T> is read-only.

ToString()

Returns a string representation of this node.

public override string ToString()

Returns

string

A textual rendering of this node.

WriteTo(Utf8BencodeWriter)

Writes the canonical Bencode encoding of this node to the supplied writer.

public override void WriteTo(Utf8BencodeWriter writer)

Parameters

writer Utf8BencodeWriter

The destination writer.

Exceptions

BencodeSerializationException

Thrown when the subtree rooted at this node contains a null entry, which has no Bencode representation.

Explicit Interface Implementations

IEnumerable.GetEnumerator()

Returns an enumerator that iterates through a collection.

IEnumerator? IEnumerable.GetEnumerator()

Returns

IEnumerator

An IEnumerator object that can be used to iterate through the collection.

Applies to

ProductVersions
.NET8, 10