PowerShell v3.0 PSCustomObject
में पेश किया गया था। यह PSObject
जैसा है, लेकिन बेहतर है। अन्य सुधार (जैसे संपत्ति आदेश संरक्षित किया जा रहा), hashtable से वस्तु बनाने के अलावा सरल है:पावरशेल प्रकार त्वरक: PSObject बनाम PSCustomObject
[PSCustomObject]@{one=1; two=2;}
अब यह स्पष्ट है कि इस बयान लगता है:
[System.Management.Automation.PSCustomObject]@{one=1; two=2;}
उसी तरह काम करेगा, क्योंकि PSCustomObject
एक है पूर्ण नामस्थान + वर्ग नाम के लिए "उपनाम"। इसके बजाय मैं एक त्रुटि मिलती है:
Cannot convert the "System.Collections.Hashtable" value of type "System.Collections.Hashtable" to type "System.Management.Automation.PSCustomObject".
मैं वस्तुओं के दोनों प्रकार के लिए त्वरक सूचीबद्ध:
[accelerators]::get.GetEnumerator() | where key -Like ps*object
Key Value
--- -----
psobject System.Management.Automation.PSObject
pscustomobject System.Management.Automation.PSObject
और खोज की दोनों का संदर्भ है कि एक ही PSObject
वर्ग - इसका मतलब यह है कि त्वरक का उपयोग कर एक गुच्छा कर सकते हैं है कोड को छोटा बनाने की तुलना में अन्य सामानों का।
इस मुद्दे के बारे में मेरे सवाल कर रहे हैं:
- एक त्वरक पूर्ण प्रकार नाम का उपयोग कर बनाम का उपयोग कर के बीच आप मतभेदों में से कुछ दिलचस्प examaples है?
- जब भी एक त्वरक सामान्य सर्वोत्तम अभ्यास के रूप में उपलब्ध होता है तो पूर्ण प्रकार के नाम का उपयोग करना चाहिए?
- कैसे जांचें, शायद प्रतिबिंब का उपयोग करके, अगर एक त्वरक केवल अंतर्निहित वर्ग की ओर इशारा करते हुए अन्य सामान करता है? स्थिर तरीकों पर
यदि आप 'System.Management.Automation.Language.Compiler को संकुचित करते हैं।VisitConvertExpression', तो आप देख सकते हैं कि तीन प्रकार के नामों के लिए विशेष हैंडलिंग हैं: 'आदेश दिया गया', 'PSCustomObject' और' ref'। – PetSerAl