HIRO's.NET

VB.NET, C#, PowerShell Tipsサイト

 VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。

 基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。

HIRO's.NET RSSHIRO's.NET RSS




PowerShell V2でお困りのことはありませんか?
そんな悩みは当サイトで解決!!
UPDATE:2009/04/10   

HOME > PowerShell V2 > 変数

PowerShell V2 PowerShell V2 CTP3 

03.変数の型

 

 変数には型があります。

 まずは型について説明します。

 通常C言語、VB.NET、C#などといった言語では、変数にはどのような値をしまえるかを決めて使用します。

 たとえば「変数Aには数値しかしまうことが出来ないようにする」といったようにです。

 変数に型を指定する作業として「宣言」があります。

 しかしPowerShellでは、前述の「変数の使用方法」で見ていただいたとおり、宣言の作業をせずに変数を使用しています。

 こうして使用した変数の型はどうなるのでしょうか?

 変数の型を確認する手段としてGetType()というメソッドがありますので、それを利用して調べてみましょう。GetType()メソッドは変数名とGetType()をドット(.)でつなげて使用します。


$A = 3
$A.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Int32                                    System.ValueType

 上記は 変数Aに数値3を代入 しています

 ここでGetType()メソッドを実行すると、NameのところにInt32と表示されているかと思います。これが現在の変数の型であり、Inte32型(整数を代入できる型)であることが示されています。

 では、この変数Aに文字列"ABC"を代入した場合、型はどうなるのでしょうか?


PS> $A = "ABC"
PS> $A.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object

 上記を見ると String になっていることがわかります。

 このようにPowerShellでは代入する値によって型が決定されます。


変数に型を指定する

 PowerShellでは、単純に値を入れると、入れた値の型になることがわかりました。

 このほかにPowerShellでは型を指定した変数を作成して使用することが可能です。

 型を指定するには

 [型]変数名

 のように、変数名の前に型を指定します。

 たとえば下記はint型(32ビットの符号付き整数)の変数Bに数値3 を代入します。


PS> [int]$B = 3

 では、このようにして作成した変数Bに文字列を代入したらどうなるのでしょうか?


PS> $B = "ABC"
Cannot convert value "ABC" to type "System.Int32".
 Error: "入力文字列の形式が正しくありません。"
At line:1 char:3
+ $B <<<<  = "ABC"
    + CategoryInfo          : MetadataError: (:) [], ArgumentTransformationMetadataException
    + FullyQualifiedErrorId : RuntimeException

 このように、int型にした変数には文字列を代入することが出来なくなります。

 PowerShellでは、

の両方を使用することが出来ますので、作成するシステムによって使い分けることをおすすめします。