p.58 リテラル
・リテラル:プログラムの中で値を直接記述したもの ・整数リテラル:0から9の数字列。先頭のみ「-」が指定できる。int型扱い。 ※ int型の範囲を超える値は自動的にuint型またはlong型として扱われる ・uint型のリテラル:正の整数リテラルの末尾に「U」または「u」を付けたもの。uint型扱いなので、0から約42億までOK。 例: uint x = 4200000000U; //uint型変数の初期化 ・long型のリテラル:整数リテラルの末尾に「L」を付けたもの。long型扱いなので、uint型よりさらに広い範囲を扱える 例: long x = -4300000000L; //long型変数の初期化 ※小文字の「l」も使えるが非推奨 ・ulong型のリテラル:正の整数リテラルの末尾に「UL」または「ul」を付けたもの。ulong型扱いなので、0からlong型よりさらに広い範囲を扱える 例: ulong x = 4300000000UL; //ulong型変数の初期化 ・実数リテラル:0から9の数字列。先頭のみ「-」が、1個のみ「.」が指定できる。double型扱い。 ・double型のリテラル:実数リテラルのことで、末尾に「D」または「d」を付けることもできる(通常省略) ・float型のリテラル:実数リテラルの末尾に「F」または「f」を付けたもの。精度が下がるがメモリ占有量が半分になる 例: float x = 3.14F; //float型変数の初期化 ・decimal型のリテラル:実数リテラルの末尾に「M」または「m」を付けたもの。精度が上がるがメモリ占有量が倍になる 例: decimal x = 3.14M; //decimal型変数の初期化
p.59 GetTypeメソッド
・型の情報を文字列で返してくれるC#提供の仕掛け(メソッド) ・なお、リテラルも型情報を持つので「リテラル.GetType()」も可能。 ・ただし、「.」の優先度は「-」より高いので、負数リテラルの型情報を得る場合は、カッコで優先度を変えること 例: Console.WriteLine((-10).GetType()); //「-10.GetType()」はエラー
p.61 暗黙の型指定
・C#(初期バージョンを除く)では、初期化によって変数型を確定できることを生かして、型の代わりにvarキーワードを指定できる ・これにより、変数の型は初期値に応じて自動決定される 例: var i = 1; //「int i = 1;」と同じ ・末尾語がないので初期値では確定できない型にしたい場合は、自動決定を避ける 例: short i = 1; //varにするとint型になってしまう ・初期値にはできるが型情報を持たない「null」は指定不可 ・char、stringは適用できる 例: var i = '1'; //「char i = '1';」と同じ 例: var i = "A"; //「string i = "A";」と同じ
p.62 var01.csについて
・Mainメソッドの戻り値型が「int」で「return 0;」が記述されているが不必要 ・つまり、これまで通り、Mainメソッドの戻り値型は「void」で良く、「return 0;」は必要
p.62 var01.cs
//p.62 var01.cs
using System;
class var01
{
public static void Main()
{
var myText = "猫でもわかるC#プログラミング 第"; //string型になる
var no = 3; //int型になる
var myc = '版'; //char型になる
Console.WriteLine(myText + no + myc); //myTextがstring型なので連結される
Console.WriteLine("myTextの型は{0}、noの型は{1}、mycの型は{2}",
myText.GetType(), no.GetType(), myc.GetType());
}
}
提出:アレンジ演習:p.63 dynamic01.cs
・x,y,zに違う型の値を再代入できることを確認し、変更後の型を表示しよう
作成例
//p.63 dynamic01.cs
using System;
class dynamic01
{
public static void Main()
{
dynamic x = 10, y = "abc", z; //xはint、yはstring、zは型未定
z = 1.25; //zはdoubleになる
Console.WriteLine("xは{0}", x.GetType()); //intの.NET型情報を表示
Console.WriteLine("yは{0}", y.GetType()); //stringの.NET型情報を表示
Console.WriteLine("zは{0}", z.GetType()); //doubleの.NET型情報を表示
x = true; //xはboolになる
y = 10M; //yはdecimalになる
z = -4200000000; //zはlongになる(int,uintの範囲を超えるので)
Console.WriteLine("xは{0}", x.GetType()); //boolの.NET型情報を表示
Console.WriteLine("yは{0}", y.GetType()); //decimalの.NET型情報を表示
Console.WriteLine("zは{0}", z.GetType()); //longの.NET型情報を表示
}
}