# OpcArgumentInfo Members

> Reference: Provides properties and methods for the examination a single argument of a node classified as Method.

<dl class="api-definition">
<dt>Type</dt>
<dd><a href="./">OpcArgumentInfo</a></dd>
<dt>Namespace</dt>
<dd><a href="../namespaces/opc.uafx.client">Opc.UaFx.Client</a></dd>
<dt>Assembly</dt>
<dd>Opc.UaFx.Advanced.dll</dd>
<dt>Package</dt>
<dd>Opc.UaFx.Advanced v2.59.0</dd>
<dt>Also in</dt>
<dd>Opc.UaFx.Client</dd>
</dl>

## Properties

### ArrayDimensions

Gets the length for each dimension of an array value of the argument represented.

<div class="api-signature" data-lang="csharp">

```csharp
public uint[] ArrayDimensions { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property ArrayDimensions As UInteger()
```

</div>

**Property value**

[UInt32](https://learn.microsoft.com/dotnet/api/system.uint32)[]

An empty array in case there the value of the argument represented is a scalar value; otherwise an [uint](https://learn.microsoft.com/dotnet/api/system.uint32) array there each entry indicates a single dimension while the value of the entry defines the length of that dimension or a null reference (Nothing in Visual Basic) if [ArrayRank](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcargumentinfo/members#arrayrank) is less or equals zero.

### ArrayLength

Gets the total number of elements in all the dimensions of the array value of the argument represented.

<div class="api-signature" data-lang="csharp">

```csharp
public long ArrayLength { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property ArrayLength As Long
```

</div>

**Property value**

[Int64](https://learn.microsoft.com/dotnet/api/system.int64)

The total number of elements in all the dimensions of the array value of the argument represented; zero if there are no elements in the array.

### ArrayRank

Gets the rank (number of dimensions) of the array value of the argument represented. For example, a one-dimensional array returns 1, a two-dimensional array returns 2, and so on.

<div class="api-signature" data-lang="csharp">

```csharp
public int ArrayRank { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property ArrayRank As Integer
```

</div>

**Property value**

[Int32](https://learn.microsoft.com/dotnet/api/system.int32)

The rank (number of dimensions) of the array value of the argument represented.

### DataType

Gets the [OpcTypeNodeInfo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opctypenodeinfo/) about the data type node of the argument represented.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcTypeNodeInfo DataType { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property DataType As OpcTypeNodeInfo
```

</div>

**Property value**

[OpcTypeNodeInfo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opctypenodeinfo/)

An instance of the [OpcTypeNodeInfo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opctypenodeinfo/) representing the type definition of the argument represented. In case there is no known type definition for the data type referenced by the argument a null reference (Nothing in Visual Basic).

### DataTypeId

Gets the [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) about the data type node of the argument represented.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcNodeId DataTypeId { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property DataTypeId As OpcNodeId
```

</div>

**Property value**

[OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/)

An instance of the [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) which identifies the type node definition of the argument represented. In case there is no type definition for the type of value provided by the argument represented a null reference (Nothing in Visual Basic).

### DefaultValue

Gets the value of the argument that is by default used in case there is no custom value specified for the argument.

<div class="api-signature" data-lang="csharp">

```csharp
public object DefaultValue { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property DefaultValue As Object
```

</div>

**Property value**

[Object](https://learn.microsoft.com/dotnet/api/system.object)

The default value used by argument by definition.

### Description

Gets the textual description of the use of the argument represented.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcText Description { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property Description As OpcText
```

</div>

**Property value**

[OpcText](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opctext/)

A string which describes the use of the argument.

### IsArray

Gets a value indicating whether the value of the argument represented is an array.

<div class="api-signature" data-lang="csharp">

```csharp
public bool IsArray { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property IsArray As Boolean
```

</div>

**Property value**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true if the value of the argument represented is an array; otherwise the false.

### Name

Gets the name of the argument.

<div class="api-signature" data-lang="csharp">

```csharp
public string Name { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property Name As String
```

</div>

**Property value**

[String](https://learn.microsoft.com/dotnet/api/system.string)

The name of the argument.

## Methods

### GetArrayLength

Gets a 32-bit integer that represents the number of elements in the specified dimension of the array value of the argument.

<div class="api-signature" data-lang="csharp">

```csharp
public long GetArrayLength(int dimension)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function GetArrayLength(dimension As Integer) As Long
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `dimension` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | A zero-based dimension of the array value whose length needs to be determined. |

**Returns**

[Int64](https://learn.microsoft.com/dotnet/api/system.int64)

A 32-bit integer that represents the number of elements in the specified dimension of the array value.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentOutOfRangeException](https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception) | The `dimension` is less than zero or equals to or greater than [ArrayRank](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcargumentinfo/members#arrayrank). |
| [InvalidOperationException](https://learn.microsoft.com/dotnet/api/system.invalidoperationexception) | The value of the argument represented is not an array (see [IsArray](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcargumentinfo/members#isarray)). |

**Remarks**

The time consumed by the first call of the property depends on the availability of the server, because of the [ArrayDimensions](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#arraydimensions) attribute is requested on-demand and is cached for subsequent calls. This means, that further [ArrayDimensions](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#arraydimensions) attribute requests will take use of already retrieved attribute information and will not demand additional network resources.

### GetArrayLowerBound

Gets the index of the first element of the specified dimension in the array value of the argument.

<div class="api-signature" data-lang="csharp">

```csharp
public long GetArrayLowerBound(int dimension)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function GetArrayLowerBound(dimension As Integer) As Long
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `dimension` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | A zero-based dimension of the array value whose starting index needs to be determined. |

**Returns**

[Int64](https://learn.microsoft.com/dotnet/api/system.int64)

The index of the first element of the specified dimension in the array value.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentOutOfRangeException](https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception) | The `dimension` is less than zero or equals to or greater than [ArrayRank](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcargumentinfo/members#arrayrank). |
| [InvalidOperationException](https://learn.microsoft.com/dotnet/api/system.invalidoperationexception) | The value of the argument represented is not an array (see [IsArray](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcargumentinfo/members#isarray)). |

### GetArrayUpperBound

Gets the index of the last element of the specified dimension in the array value of the argument.

<div class="api-signature" data-lang="csharp">

```csharp
public long GetArrayUpperBound(int dimension)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function GetArrayUpperBound(dimension As Integer) As Long
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `dimension` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | A zero-based dimension of the array value whose upper bound needs to be determined. |

**Returns**

[Int64](https://learn.microsoft.com/dotnet/api/system.int64)

The index of the last element of the specified dimension in the array value, or -1 if the specified dimension is empty.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentOutOfRangeException](https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception) | The `dimension` is less than zero or equals to or greater than [ArrayRank](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcargumentinfo/members#arrayrank). |
| [InvalidOperationException](https://learn.microsoft.com/dotnet/api/system.invalidoperationexception) | The value of the argument represented is not an array (see [IsArray](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcargumentinfo/members#isarray)). |

**Remarks**

The time consumed by the first call of the property depends on the availability of the server, because of the [ArrayDimensions](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#arraydimensions) attribute is requested on-demand and is cached for subsequent calls. This means, that further [ArrayDimensions](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#arraydimensions) attribute requests will take use of already retrieved attribute information and will not demand additional network resources.
