講義メモ・後半

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型情報を表示
    }
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です