Синтаксис
PowerShell в целом аналогичен синтаксису C#, поскольку они оба используют структуру. NET. Похоже, вы сбиваете с толку stati c операторы и конструкторы .
Конструкторы - это в основном входные данные, которые может принимать класс. Например:
class Main
{
[int]$A
[string]$B
[bool]$C
}
class myClass : Main
{
myClass(){
$This.A = 1
$This.B = "Property"
$This.C = $False
}
[void] AM([string]$Argument) {
Write-Host $Argument
$This.C = $True
}
}
В вашем классе
myClass(){
$This.A = 1
$This.B = "Property"
$This.C = $False
}
является конструктором. Они содержат свойства из оператора ::new()
stati c (это могло вас запутать).
A stati c operator похож на метод, но с stati c операторы (::
). Вы определяете операторы stati c с Static [void]
или другим типом в зависимости от желаемого типа вывода. Пример:
Static [void] AS() {
Write-Host "Test"
}
В таком классе, как
class Main
{
[int]$A
[string]$B
[bool]$C
}
class myClass : Main
{
myClass(){
$This.A = 1
$This.B = "Property"
$This.C = $False
}
[void] AM([string]$Argument) {
Write-Host $Argument
$This.C = $True
}
Static [void] AC() {
Write-Host "Test"
}
}
, вы можете вызвать оператор stati c с помощью
[myClass]::AS()
с выводом
Test
Чего нельзя сделать с методами:
PS C:\> [myClass]::AM("Argument")
Method invocation failed because [myClass] does not contain a method named 'AM'.
At line:1 char:1
+ [myClass]::AM()
+ ~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
Технически stati c операторы рассматриваются как методы, но они разные.
Конечно, вы также можете иметь аргументы в своем операторе stati c, в основном это методы, которые вызываются по-разному:
class Main
{
[int]$A
[string]$B
[bool]$C
}
class myClass : Main
{
myClass(){
$This.A = 1
$This.B = "Property"
$This.C = $False
}
Static [void] AC([string]$Argument) {
Write-Host $Argument
}
}
и
PS C:\> [myClass]::AC("Test")
Test
PS C:\> [myClass]::AC("Argument")
Argument