# ArcBuffer.ArcBuffer(ArcBufferPage?, int, int, int)

[Type overview](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.buffers.arcbuffer/) | [Constructors](/orleans/docs/api/csharp/microsoft.orleans.serialization/orleans.serialization.buffers.arcbuffer/constructors/)

[Source](https://github.com/dotnet/orleans/blob/fbe240c34e9a1389ca5ab2d52f292ed8749ea530/src/Orleans.Serialization/Buffers/ArcBufferWriter.cs#L1071-L1095)

```csharp
public ArcBuffer(ArcBufferPage? first, int token, int offset, int length)
```

Creates a borrowed view over a valid, pinned page chain.

### Parameters

- `first` (`ArcBufferPage?`): The first page, or `null` for an owner-free empty buffer.
- `token` (`int`): The current token of `first`.
- `offset` (`int`): The offset within `first` at which the view begins.
- `length` (`int`): The number of bytes covered by the view.

### Exceptions

- `System.ArgumentOutOfRangeException`: The offset is outside the first page, the length is negative or exceeds the linked pages, or an owner-free buffer has a nonzero offset or length.
- `System.InvalidOperationException`: The page token or reference count is invalid.
