आधिकारिक के अनुसार दस्तावेज़ PowerShell में सरणियों के बारे में, सरणियों के लिए कई विधियाँ परिभाषित की गई हैं, उदाहरण के लिए Clear(), ForEach(), जहाँ(), आदि। निम्नलिखित कोड ने इन विधियों का परीक्षण किया:

$arr = 1..2
$arr.Clear()
$arr.Length

write "--------------------------------------------------"
$arr = 1..2
$arr.ForEach({$_ + 1})

write "--------------------------------------------------"
$arr = 65..90
$arr.Where({($_ % 2) -eq 0})

आउटपुट:

2
--------------------------------------------------
2
3
--------------------------------------------------
66
68
70
72
74
76
78
80
82
84
86
88
90

जुर्माना! और, ForEach () जैसी विधियों में कई अधिभार हैं जिनका परीक्षण यहां नहीं किया गया है।

लेकिन इन विधियों को कहाँ परिभाषित किया गया है? मेरा मतलब है, वह कौन सा वर्ग है जिसमें इन विधियों की परिभाषा है? जहाँ तक मुझे पता है, इन विधियों को .net core में परिभाषित नहीं किया गया है। (मैं पावरशेल 7 का उपयोग करता हूं)

2
Ding Xin 12 अक्टूबर 2020, 13:51

3 जवाब

सबसे बढ़िया उत्तर

Clear(), System.Array द्वारा कार्यान्वित IList इंटरफ़ेस का हिस्सा है, जो PowerShell में संग्रह (System.Object[]) के लिए आधार प्रकार है।

उपलब्ध सभी मूल विधियों को देखने के लिए, उपयोग करें:

$arr.PSObject.Methods
# or
Get-Member -InputObject $arr -MemberType Methods

हालांकि: Where() और ForEach() "magic" विधियां v4 में पेश की गई थीं और वास्तव में PowerShell-विशिष्ट एक्सटेंशन विधियां हैं (ForEach-Object और Where-Object के अधिक प्रदर्शनकारी विकल्प के रूप में), परिभाषित System.Management.Automation.EnumerableOps में। स्रोत:

internal static object Where(IEnumerator enumerator, ScriptBlock expressionSB, WhereOperatorSelectionMode selectionMode, int numberToReturn)

internal static object ForEach(IEnumerator enumerator, object expression, object[] arguments)
1
marsze 12 अक्टूबर 2020, 21:23

जहां तक ​​मुझे पता है, इन विधियों को .net core में परिभाषित नहीं किया गया है, आप यह क्यों कहते हैं। (मैं पावरशेल 7 का उपयोग करता हूं) ? सचमुच:

$PSVersionTable.PSVersion | Out-Default
$arr = 1..2
$arr.GetType() | Get-Member -MemberType Methods -Static
Major  Minor  Patch  PreReleaseLabel BuildLabel
-----  -----  -----  --------------- ----------
7      0      3


   TypeName: System.Object[]

Name            MemberType Definition
----            ---------- ----------
AsReadOnly      Method     static System.Collections.ObjectModel.ReadOnlyCollection[T] …
BinarySearch    Method     static int BinarySearch[T](T[] array, int index, int length,…
Clear           Method     static void Clear(array array, int index, int length)
ConstrainedCopy Method     static void ConstrainedCopy(array sourceArray, int sourceInd…
ConvertAll      Method     static TOutput[] ConvertAll[TInput, TOutput](TInput[] array,…
Copy            Method     static void Copy(array sourceArray, array destinationArray, …
CreateInstance  Method     static array CreateInstance(type elementType, int length), s…
Empty           Method     static T[] Empty[T]()
Equals          Method     static bool Equals(System.Object objA, System.Object objB)
Exists          Method     static bool Exists[T](T[] array, System.Predicate[T] match)
Fill            Method     static void Fill[T](T[] array, T value), static void Fill[T]…
Find            Method     static T Find[T](T[] array, System.Predicate[T] match)
FindAll         Method     static T[] FindAll[T](T[] array, System.Predicate[T] match)
FindIndex       Method     static int FindIndex[T](T[] array, System.Predicate[T] match…
FindLast        Method     static T FindLast[T](T[] array, System.Predicate[T] match)
FindLastIndex   Method     static int FindLastIndex[T](T[] array, System.Predicate[T] m…
ForEach         Method     static void ForEach[T](T[] array, System.Action[T] action)
IndexOf         Method     static int IndexOf(array array, System.Object value), static…
LastIndexOf     Method     static int LastIndexOf(array array, System.Object value), st…
new             Method     System.Object[] new(int )
ReferenceEquals Method     static bool ReferenceEquals(System.Object objA, System.Objec…
Resize          Method     static void Resize[T]([ref] T[] array, int newSize)
Reverse         Method     static void Reverse(array array), static void Reverse(array …
Sort            Method     static void Sort(array array), static void Sort(array keys, …
TrueForAll      Method     static bool TrueForAll[T](T[] array, System.Predicate[T] mat…
-1
JosefZ 12 अक्टूबर 2020, 14:38

लेकिन इन विधियों को कहाँ परिभाषित किया गया है? मेरा मतलब है, वह कौन सा वर्ग है जिसमें इन विधियों की परिभाषा है?

$arr = @(1..10)

$arr.GetType() का उपयोग करके इसका कार्यान्वयन प्रकार प्राप्त करें

जो देता है

IsPublic IsSerial Name                                     BaseType                                                                                                                                                                                              
-------- -------- ----                                     --------                                                                                                                                                                                              
True     True     Object[]                                 System.Array  

यह ऐरे क्लास है .. आप नीचे दिए गए लिंक और इसके तरीकों में सरणी वर्ग के बारे में अधिक जानकारी प्राप्त कर सकते हैं:

https://docs.microsoft.com/en-us/dotnet/api/system.array?view=netcore-3.1

-1
TheGameiswar 12 अक्टूबर 2020, 14:19