3

これら 2 つの配列作成ステートメントに違いはありますか? では、配列を作成するときに「@」記号はオプションですか?

$a = "This", "Is", "a", "cat"
$a.GetType()
$a | gm
$a = @("This", "Is", "a", "cat")
$a.GetType()
$a | gm
4

2 に答える 2

6
$a = @() # declare an empty array.

$a = @(mysingleitem) # declare an array with a single element

それ以外の場合はオプションです。

于 2011-10-11T10:48:54.247 に答える
2

これら 2 つの配列作成ステートメントに違いはありますか?

100% 確信はありませんが (PowerShell の根性に依存します)、違いは次のようになる可能性があります:"This", "Is", "a", "cat"配列を作成します。@("This", "Is", "a", "cat")同じ配列を作成し、演算子 @() をそれに適用します (この特定のケースでは明らかに冗長な操作です)

たとえば、このプロファイラーを使用すると、2 番目の式がかなり遅い (14% 程度) ことがわかります。そのため、私の推測は正しいかもしれません。理想的には、PowerShell コード インタープリターはこれら 2 つの式を同じように処理できますが、おそらくそうではありません。

ヘルプ トピックも参照してください (最後、演算子@()とについて,)

help about_operators
于 2011-10-11T11:35:08.683 に答える