safe-dereference 演算子は、オブジェクトのプロパティや配列の要素に安全にアクセスする方法を提供します。 これは、プロパティまたは要素の存在や値を適切に知らずにプロパティまたは要素にアクセスしようとしたときに発生する可能性のあるエラーを防ぐのに役立ちます。
safe-dereference
<base>.?<property>
<base>[?<index>]
safe-dereference 演算子は、そのオペランドが null 以外に評価される場合にのみ、メンバー アクセス .?<property>、または要素アクセス [?<index>] 演算子をそのオペランドに適用します。それ以外の場合は、null を返します。 つまり、以下のようになります。
-
aがnullと評価された場合、a.?xまたはa[?x]の結果はnullです。 -
aがxプロパティを持たないオブジェクトの場合、a.?xはnullです。 -
aがインデックスxに要素を持たないオブジェクトである場合、a[?x]はnull -
aが長さがx以下の配列の場合、a[?x]はnullです。 -
aが null 以外で、xという名前のプロパティがある場合、a.?xの結果はa.xの結果と同じです。 -
aが null 以外で、インデックスxに要素がある場合、a[?x]の結果はa[x]の結果と同じです
safe-dereference 演算子は短絡実行されます。 つまり、条件付きのメンバーまたは要素アクセス操作のチェーン内にある 1 つの操作から null が返された場合、残りのチェーンは実行されません。 次の例では、storageAccountsettings[?i] が null であると評価されると、.?name は評価されません。
param storageAccountSettings array = []
param storageCount int
param location string = resourceGroup().location
resource storage 'Microsoft.Storage/storageAccounts@2025-06-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'
}
}]
次のステップ
- この例を実行するには、Azure CLI または Azure PowerShell を使用して、Bicep ファイルをデプロイします。
- Bicep ファイルの作成方法については、「クイックスタート: Visual Studio Code を使用して Bicep ファイルを作成する」を参照してください。
- Bicep の型のエラーを解決する方法については、「Bicep の any 関数」を参照してください。