programing

PowerShell을 사용하여 선언 시 사전 초기화

topblog 2023. 8. 1. 20:13
반응형

PowerShell을 사용하여 선언 시 사전 초기화

해당 파워셸 코드:

$drivers = New-Object 'System.Collections.Generic.Dictionary[String,String]'
$drivers.Add("nitrous","vx")
$drivers.Add("directx","vd")
$drivers.Add("openGL","vo")

Add 메서드를 호출하지 않고 이 사전을 직접 초기화할 수 있습니까?맘에 들다.NET에서 할 수 있습니까?

이런 거?

$foo = New-Object 'System.Collections.Generic.Dictionary[String,String]'{{"a","Alley"},{"b" "bat"}}

[이것이 어떤 유형의 구문을 포함할지 확실하지 않음]

아니요. 초기화 구문은Dictionary<TKey,TValue>C# 구문 캔디입니다.Powershell은 자체 이니셜라이저 구문을 지원합니다.System.Collections.HashTable(@{}):

$drivers = @{"nitrous"="vx"; "directx"="vd"; "openGL"="vo"};

거의 모든 경우에 마찬가지로 잘 작동할 것입니다.Dictionary<TKey,TValue>정말 필요하다면,Dictionary<TKey,TValue>어떤 이유로, 당신은 다음과 같은 기능을 만들 수 있습니다.HashTable키와 값을 반복하여 새 키에 추가합니다.Dictionary<TKey,TValue>.


어쨌든 C# 이니셜라이저 구문은 정확하게 "직접"은 아닙니다.컴파일러가 다음 호출을 생성합니다.Add()그것으로부터.

$d = [System.Collections.Generic.Dictionary[String,Object]]::new()
#works now.
$d.Add('keyvalue',  @{x=1; y='abc'})

#Evaluate dictionary
$d
<# outputs
Key      Value 
---      ----- 
keyvalue {y, x}
#>

#evalueate contains key:
$d.Keys.Contains('keyvalue')
<# outputs
True
#>

# Evaluate the value using the key
$d['keyvalue']
<# outputs
Name                           Value                                                                                                                                                          
----                           -----                                                                                                                                                          
y                              abc                                                                                                                                                            
x                              1                                                                                                                                                              
#>

#Evaluate the y property of the object
 $d['keyvalue'].y
<# outputs
abc
#>

# Evaluate the x property of the object
$d['keyvalue'].x
<# outputs
1
#>

언급URL : https://stackoverflow.com/questions/6765375/initialize-dictionary-at-declaration-using-powershell

반응형