Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The safe-dereference operator provides a way to access properties of an object or elements of an array in a safe manner. It helps to prevent errors that can occur when attempting to access properties or elements without proper knowledge of their existence or value.
safe-dereference
<base>.?<property>
<base>[?<index>]
A safe-dereference operator applies a member access, .?<property>, or element access, [?<index>], operation to its operand only if that operand evaluates to non-null; otherwise, it returns null. That is,
- If
aevaluates tonull, the result ofa.?xora[?x]isnull. - If
ais an object that doesn't have anxproperty, thena.?xisnull. - If
ais an object that doesn't have an element at indexx, thena[?x]isnull - If
ais an array whose length is less than or equal tox, thena[?x]isnull. - If
ais non-null and has a property namedx, the result ofa.?xis the same as the result ofa.x. - If
ais non-null and has an element at indexx, the result ofa[?x]is the same as the result ofa[x]
The safe-dereference operators are short-circuiting. That is, if one operation in a chain of conditional member or element access operations returns null, the rest of the chain doesn't execute. In the following example, .?name isn't evaluated if storageAccountsettings[?i] evaluates to null:
param storageAccountSettings array = []
param storageCount int
param location string = resourceGroup().location
resource storage 'Microsoft.Storage/storageAccounts@2023-04-01' = [for i in range(0, storageCount): {
name: storageAccountSettings[?i].?name ?? 'defaultname'
location: storageAccountSettings[?i].?location ?? location
kind: storageAccountSettings[?i].?kind ?? 'StorageV2'
sku: {
name: storageAccountSettings[?i].?sku ?? 'Standard_GRS'
}
}]
Next steps
- To run the examples, use Azure CLI or Azure PowerShell to deploy a Bicep file.
- To create a Bicep file, see Quickstart: Create Bicep files with Visual Studio Code.
- For information about how to resolve Bicep type errors, see Any function for Bicep.