在PowerShell中将对象作为类成员创建一个数组

Jarobinson

运行下面的代码时,我不断收到错误消息。我不明白我在做什么错

错误1:您不能在空值表达式上调用方法。在线:25字符:9

错误2:无法索引为空数组。在线:43字符:1

码:

            Class Step {
                [int]$StepNumber = 0
                [string]$Name = ''
                [string]$ScriptFile = ''
                [int]$status = 0 # 0 = 'InComplete', 1 = 'Complete', 2 = 'Failed', -1 = 'Skipped'
                [string]$DependencyStepNumber = -1

                Step([string]$Name, [int]$StepNumber, [string]$ScriptFile) {
                    $this.Name = $Name
                    $this.StepNumber = $StepNumber
                    $this.ScriptFile = $ScriptFile
                }
            }


            Class Guide {
                [int]$StepNumberCounter = 0
                [string]$Name = ''
                [Step[]]$Steps

                [int]AddStep([string]$Name, [string]$ScriptFile) {
                    $newStepNumber = $this.GetNewStepNumber()
                    $newStep = [Step]::new($Name, $newStepNumber, $ScriptFile)

line-25>>>          $this.Steps.Add($newStep)

                    return $newStepNumber
                }

                [int]GetStepName([int]$StepNumber) {
                    return $this.Steps[$StepNumber-1]
                }

                [int]GetNewStepNumber() {
                    return $this.StepNumberCounter += 1
                }
             }

             $Guide = [Guide]::new()
             $Guide.AddStep('Step One','ScriptOne.ps1')
             $Guide.AddStep('Step Two','ScriptTwo.ps1')

line-43>>>   Write-Host $Guide.Steps[0]
             Write-Host $Guide.Steps[1]
Mayursharma

数组列表具有更好的性能,请参见下面的修订代码

Class Step {
    [int]$StepNumber = 0
    [string]$Name = ''
    [string]$ScriptFile = ''
    [int]$status = 0 # 0 = 'InComplete', 1 = 'Complete', 2 = 'Failed', -1 = 'Skipped'
    [string]$DependencyStepNumber = -1

    Step([string]$Name, [int]$StepNumber, [string]$ScriptFile) {
        $this.Name = $Name
        $this.StepNumber = $StepNumber
        $this.ScriptFile = $ScriptFile
    }
}


Class Guide {
    [int]$StepNumberCounter = 0
    [string]$Name = ''
    [System.Collections.ArrayList]$Steps = @()

    [int]AddStep([string]$Name, [string]$ScriptFile) {
        $newStepNumber = $this.GetNewStepNumber()
        $newStep = [Step]::new($Name, $newStepNumber, $ScriptFile)

        $this.Steps.Add($newStep)

        return $newStepNumber
    }

    [int]GetStepName([int]$StepNumber) {
        return $this.Steps[$StepNumber-1]
    }

    [int]GetNewStepNumber() {
        return $this.StepNumberCounter += 1
    }
}

$Guide = [Guide]::new()

$Guide.AddStep('Step One','ScriptOne.ps1')
$Guide.AddStep('Step Two','ScriptTwo.ps1')

Write-Output $Guide.Steps[0]
Write-Output $Guide.Steps[1]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Powershell:添加一个数组作为另一个数组的成员

如何在jquery中将对象属性从一个数组对象推送到另一个数组对象?

为什么在 Javascript 中将对象推入另一个数组后,我的对象变成了数组?

在Java中将数组作为参数传递时创建一个数组

在另一个类中将对象添加到数组

如何在另一个类Java中将对象添加到数组

将对象从一个数组移到另一个数组

将对象从一个数组推到另一个数组

将对象数组中的多个数组合并为一个数组

创建一个结构体作为枚举类成员

如何在构造函数中将对象数组作为参数传递,然后将传递的数组复制到另一个数组(仍在构造函数中)

创建一个组件作为对象实例中的成员

如何创建一个以数组为成员的数组对象?

如何创建一个包含对象作为数组元素的类的数组?

将对象内的多个数组合并为一个数组

在javascript类中创建一个数组以容纳多个对象

创建一个类实例作为另一个类的成员

如何将对象从对象中的数组推到另一个数组?

根据条件将对象从一个数组添加到另一个数组

Javascript:将对象从一个数组移动到另一个数组:最佳方法?

如何通过特征将对象从一个数组移动到另一个数组?

如何按特征将对象从一个数组移动到另一个数组?

C++,在另一个对象构造函数中将对象作为参数传递

将对象指针作为成员函数的第一个参数传递:这是标准的吗?

创建一个数组以迭代成员的两个数组

用比较器类创建一个数组

使用每个数组创建一个新对象

如何创建一个数组类型的对象?

从两个数组创建一个JavaScript对象