本記事は、Excel C# Script入門講座の1記事です。
変数の型(クラス)
C# Scriptでは、宣言した変数には必ずデータの型(クラス)を指定する必要があります。データの型(クラス)とは、変数に格納できるデータの種類をいいます。
なお、var (型推論)は、何でも代入できる型ではなく、コンパイル時に右辺の値から型(クラス)を自動的に決定する仕組みです。コンパイル時に一意に型(クラス)が決定されます。このため、一度型が決定された後、異なる型のデータを代入することはできません。
数値を代入できる変数を宣言する場合
型 | 名称 | 格納できる値の範囲 |
---|---|---|
int | 32bit 整数型 | -2,147,483,648 ~ 2,147,483,647 |
long | 64bit 整数型 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
float | 単精度浮動小数点型 | 精度7桁; ±1.5 × 10-45~ ±3.4 × 1038 |
double | 倍精度浮動小数点型 | 精度15桁; ±5.0 × 10-324~ ±1.7 × 10308 |
decimal | 10進小数 | 精度28桁; 1.0 × 10-28~ 7.9 × 1028 |
他、整数型に関しては、8,16,32,64bitのサイズそれぞれに符号有り無しが用意されています。
また、8バイト(64bit)より大きな整数値を扱いたい場合には、System.Numerics名前空間に属するBigInteger構造体を利用できます。
サンプルコード
数値に適宜suffixを付けることで、型を指定することができます。
var i = 351; //32bit整数型 int var j = 1879L; //64bit整数型 long var k = 2.7123f; //単精度浮動小数点型 float var l = 2.233; //倍精度浮動小数点型 double var m = 6.02e23; //指数表記OK。(=6.02×10^23) 倍精度浮動小数点型 double var n = 99.9m; //10進小数 decimal
文字列を代入できる変数を宣言する場合
String型は、System.Char型のシーケンシャルコレクションとなっています。文字エンコーディングはUTF-16となります。
なお、stringオブジェクトはimmutableで、1度生成した後は変更ができません。変更を加えるようなメソッドを呼び出すと、変更が加えられた後の文字列を示す新たなstringオブジェクトが生成されます。
型 | 名称 | 格納できる値の範囲 |
---|---|---|
string | 文字列型 | 最大サイズ2GB。約10億文字 |
サンプルコード
var x = "hoge"; var y = @"C:\TEST\hoge\foo"; //@を先頭につけると \ をそのまま記載可能 var yy = @" line1: line2: "; //複数行の記載も可能 var z = $"{x} is hoge"; //$ を先頭につけると文字列挿入。string.Formatと等価。 var i = 100; var zz = $"{i,9:C}円の商品"; //書式指定も可能 var zzz = $@" {x} {y} {z} "; //$@ を先頭につけると複数行の文字列挿入が可能
日付・時刻を代入できる変数を宣言する場合
型 | 名称 | 格納できる値の範囲 |
---|---|---|
DateTime | 日時 を示すオブジェクト | 西暦1年1/1 0:00 ~ 西暦9999年12/31 23:59。時刻は100ns単位。 |
TimeSpan | 時間 を示すオブジェクト | 日、時、分、秒、ミリ秒をintで指定が可能 |
日時の演算については、下記の記事を参照して下さい。
オブジェクトを代入できる変数を宣言する場合
型 | 名称 | 格納できる値の範囲 |
---|---|---|
object | オブジェクト型 | C#では全てのオブジェクトがobject型の派生のため、ボクシングによりobject型変数に代入可能。参照型。 |
dynamic | ダイナミック型 | 静的な型に対する動的コード生成を行う型。型チェックやメンバの有無を、コンパイル時ではなく実行時にチェックする。 |
なお、ExcelCSXでは、デフォルトで#rやusing宣言なしにdynamic型を利用可能。
真偽値を代入できる変数を宣言する場合
型 | 名称 | 格納できる値の範囲 |
---|---|---|
bool | ブール型 | true または false |