C#.NET:変数の宣言



変数には値型の変数と参照型の変数があります


値型の変数と参照型の変数の違いは、以下の通りです
  • 値型
     値そのものを格納します
  • 参照型
     値の格納場所の情報(参照先のアドレス)を格納します

各型のイメージ

①値型


②参照型



各型の実装例

①値型

// 値型の変数str1,str2を宣言します
////////////////
// str1 = ?
// str2 = ?
////////////////
string str1, str2;

// 変数str1に、文字列"あ"を代入します
////////////////
// str1 = "あ"
// str2 = ?
////////////////
str1 = "あ";

// 変数str2に、変数str1に格納されている値を代入します
////////////////
// str1 = "あ"
// str2 = "あ"
////////////////
str2 = str1;

// 変数str2に、"ん"を追加します
////////////////
// str1 = "あ"
// str2 = "あん"
////////////////
str2 += "ん";

// メッセージボックスを出力します
MessageBox.Show(string.Format("str1:{0}\nstr2:{1}", str1, str2));

②参照型

// 参照型の変数cls1,cls2を宣言します
////////////////
// cls1 = null
// cls2 = null
////////////////
TestClass cls1, cls2;

// 変数cls1に新しいインスタンス①のアドレスを代入します
////////////////
// cls1 = インスタンス①のアドレス
// cls2 = null
////////////////
cls1 = new TestClass();

// 変数cls2に、変数cls1に格納されている値を代入します
////////////////
// cls1 = インスタンス①のアドレス
// cls2 = インスタンス①のアドレス
////////////////
cls2 = cls1;

// 変数cls2の参照先のインスタンス①のVal1の値を変更します
////////////////
// cls1 = インスタンス①のアドレス
// cls2 = インスタンス①のアドレス
////////////////
cls2.Val1 = "あ";

// メッセージボックスを出力します
// 両方とも同じインスタンス①を参照しているので、同じ値が出力されます
MessageBox.Show(string.Format("cls1:{0}\ncls2:{1}", cls1.Val1, cls2.Val1));

/// <summary>
/// テストクラス
/// </summary>
class TestClass
{
    public string Val1
    {
        get;
        set;
    }
}

最終更新:2014年01月25日 11:08
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。