i'm trying to make System.Memory[char]
.
[System.Memory[char]]::Memory([char],0,10)
* says it can't find System.Memory type .
Also tried *
[System.Memory`3 [[char],0,10]]@()
Solution: The issue seems to be the .NET version used by the Powershell .
CodePudding user response:
It is the static pseudo method ::new()
, introduced in PowerShell v5 that provides access to a type's constructors.
# Initialize a [System.Memory[char]] instance with 10 NUL (0x0) chars.
[System.Memory[char]]::new((, [char] 0) * 10)
Note: The two System.Memory`1
constructors both require a [char[]]
array as an argument. The two additional arguments in the 3-parameter overload, start
and length
, must refer to a range of elements within that array.
The above simply creates a 10-element array to begin with (using NUL
characters), obviating the need for the additional arguments.
Note:
[System.Memory[char]]@()
does not work, because in order for PowerShell to translate this cast to a single-parameter constructor call, the operand must be a[char[]]
array:[System.Memory[char]] [char[]] @()
Fundamentally, the
System.Memory`1
type is available only in .NET Core 2.1 / .NET 5 .