<!-- Generated by tools/SharpCell.Docs from the XML documentation comments. Do not edit; run the tool with 'generate'. -->

# FunctionOptions

```csharp
public sealed class FunctionOptions
```

Namespace `SharpCell` · package `SharpCell`

How a function added through [Workbook.Functions](SharpCell.Workbook.md#functions) takes its arguments.

## Constructors

<a id="ctor"></a>
### FunctionOptions()

```csharp
public FunctionOptions()
```

Options for any number of arguments, all passed as they are, and a function that is not volatile.

## Properties

<a id="isvolatile"></a>
### IsVolatile

```csharp
public bool IsVolatile { get; init; }
```

Whether the function is calculated on every [Workbook.Recalculate](SharpCell.Workbook.md#recalculate-cancellationtoken), like `NOW`, instead of only when its arguments change.

<a id="maxarguments"></a>
### MaxArguments

```csharp
public int MaxArguments { get; init; }
```

The most arguments a call may have, up to 255 as in Excel; more make the call `#VALUE!`. Default 255.

<a id="minarguments"></a>
### MinArguments

```csharp
public int MinArguments { get; init; }
```

The fewest arguments a call may have; fewer make the call `#VALUE!`. Default 0.

<a id="scalarparameters"></a>
### ScalarParameters

```csharp
public IReadOnlyList<int> ScalarParameters { get; init; }
```

The 0-based positions of scalar parameters. A scalar parameter receives one value: given a range or an array, the function is called once per element and the results spill, as with Excel's own functions such as `LEN(A1:A10)`. Other parameters receive the argument as it is: a range as an array of its values.
