FROM ME TO YOU

oh my bizarre life !!

Visual C# 2013 パーフェクトマスター 4章 データ演算 まとめ

自分の不明点をとりまとめ。理解できているところは割愛してます。

4-2 変数の役割

変数の種類

ローカル変数

メソッドの内部で宣言。宣言を行ったメソッドのみで利用でき、メソッド1回のみ有効。

    class Program
    {
        static void Main(string[] args)
        {
            int x = 1;  /// ローカル変数
            Console.WriteLine(x);
        }
    }

フィールド変数

クラス内部で独立して宣言。メンバー変数とも呼ばれる。宣言を行ったクラス内部すべてのメソッドからアクセスでき、クラスや構造体のインスタンスが存在する限り有効。

    class Program
    {
        class Test
        {
            public int x = 10;  ///  フィールド変数
        }

        static void Main(string[] args)
        {
            Test obj = new Test();
            Console.WriteLine(obj.x);
        }
    }

フィールド変数のアクセス修飾子

アクセス修飾子 内容
public どこからでもアクセス可
internal 同一のプログラム内からのアクセスが可
protected フィールドを宣言した型(クラスorメソッド)と型から派生した型
private フィールドを宣言した型
protected internal protectedの範囲にinternalの範囲を加えたスコープ。フィールドを宣言した型から派生した型と同一のプログラム内からのアクセス

4-3 定数

構文

const int TAX

役割

一度セットした値は変更できない

定数の種類

ローカル定数とフィールド定数がある。 変数とほぼ同じ。

4-4 演算子による演算

代入演算子

演算子 内容 結果
= 右辺を左辺へ代入 int x = 5 5
+= 右辺を左辺へ加算して代入 int x = 5; x += 2 7
+= 右辺を左辺で減算して代入 int x = 5; x -= 2 3

連結演算子

演算子 内容 結果
+ 文字列の連結 string x = "hoge"+"fuga" hogefuga

比較演算子

演算子 内容
== 等しい
!= 等しくない

論理演算子

演算子 内容
& and
or

4-5 データ型の変換

暗黙的な型変換

下記コードではエラー。byte型同士の演算は演算結果の桁溢れを防止するために自動的にintへ変換される。

        static void Main(string[] args)
        {
            byte x = 5;
            byte y = 11;
            byte total;

            total = x + y;

            Console.WriteLine(total);
        }

totalをintで宣言する

        static void Main(string[] args)
        {
            byte x = 5;
            byte y = 11;
            int total;

            total = x + y;

            Console.WriteLine(total);
        }

キャスト

型変換をしながら右辺へ格納。元の変数の型が変わるわけではない。

long x = 1000;
int y = (int)x;

Convertクラスによる変換

int price;
price = Convert.ToInt32(textbox1.Text);

数値から書式指定文字列へ(Formatメソッド

            int x = 1000;
            Console.WriteLine(String.Format("{0:#,###}", x));
            /// 1,000
            /// 3桁未満の場合はカンマなし
目的 書式 結果
カンマ {0:#,###, 3500} 3,500
0埋め {0:0000,55} 0055
スペース埋め {0:4,55}  55
小数点 {0:0.000,0.25} 0.250

4-6 組み込み型

あらかじめ陽子されているデータ型

string型

string型は参照型のため変数に格納されるのはヒープ上の参照領域が格納される。 文字列の追加はインスタンスのコピーを繰り返すので低速になる。

繰り返し処理

        private void button1_Click(object sender, EventArgs e)
        {
            string str1 = "";
            for(int i = 0; i < 50000; i++)
            {
                str1 = str1 + "ABCDEFG";
            }
            MessageBox.Show("終了"); /// 数秒           
        }

StringBuilderクラスのAppendメソッド

        private void button2_Click(object sender, EventArgs e)
        {
            StringBuilder str1 = new StringBuilder();
            for (int i = 0; i < 50000; i++)
            {
                str1.Append("ABCDEFG");
            }
            MessageBox.Show("終了"); /// 一瞬  
        }

疑問点

  • フィールド変数のアクセス修飾子のpublicとineternalの違い