这是一个例子,真实的东西是一个大的New-Object 'object[,]'二维数组:
PS C:\> $a=[int16]10
PS C:\> $a.GetType().Name
Int16
PS C:\> $a++
PS C:\> $a.GetType().Name
Int32
PS C:\> $a=[int16]10
PS C:\> $a.GetType().Name
Int16
PS C:\> $a=$a+[int16]1
PS C:\> $a.GetType().Name
Int32
Run Code Online (Sandbox Code Playgroud)
我可以在此类事情中强制使用类型,但这实际上是数学完成后的转换,并且会使完整代码减慢约 10%,因此它是无用的:
PS C:\> $a=[int16]10
PS C:\> $a.GetType().Name
Int16
PS C:\> $a=[int16]($a+1)
PS C:\> $a.GetType().Name
Int16
Run Code Online (Sandbox Code Playgroud)
在使用任何数学时,是否没有办法阻止从 byte 和 int16 到它喜爱的 int32 的自动转换?
至于@mklement0 的评论,我将示例扩展到用例。请注意,该板上任何位置的值都不会超过“8”:
# Init board
$BoardXSize = [int]100
$BoardYSize = [int]100
$Board = New-Object 'object[,]' $BoardXSize,$BoardYSize
for ($y=0;$y -lt $BoardYSize;$y++) {
for ($x=0;$x -lt $BoardXSize;$x++) …Run Code Online (Sandbox Code Playgroud)