2022年01月24日
川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!total 766 count

this: 私はだあれ? 自己参照の手段

Written By: 川俣 晶連絡先

この章のテーマ §

 thisキーワードについて学びます。thisは自分自身を参照する手段です。

前提知識 §

Console.WriteLineメソッド, 文字列の基礎, 変数の基礎, クラスの基礎, コンストラクタの基礎

解説 §

 thisキーワードはC#の様々な場所で見られるキーワードです。

 ここでは特によく見かける使い方を2つ説明します。

 1つめはオブジェクトのインスタンスにおいて、自分自身を参照する方法です。サンプルソースでは、クラスのメンバーと引数に同じtheValueという名前が存在します。しかし、これを区別して処理できねば引数の値でプロパティを初期化できません。そういう時は、thisの出番です。thisは自分自身のインスタンスを指し示す特別な値です。これを経由すると必ずオブジェクトのメンバーにアクセスできます。this抜きだと引数の方を参照します。

 もう1つはコストラクタの利用です。thisキーワードを使うと【同じ型の別の引数バリエーションのコンストラクタを先に呼ぶ】という機能性を記述できます。サンプルソースの場合、引数のあるバリエーションと引数のないバリエーションのコンストラクタが用意されていますが、引数のないコストラクタからは、引数のあるコストラクタに1という値を指定して呼び出しています。このようにして呼び出した場合、双方のコンストラクタがどちらも実行されることに注意して下さい。

罠の数々 §

  • メンバー参照のthisは、静的なメンバーに対して使用できない。thisはあくまでインスタンスを指し示すものである (静的なメンバーはインスタンスに含まれない)
  • thisは常にそのインスタンスを指し示す。インスタンスが変わればthisの値も変わる

参考リンク §

コンストラクターの使用 (C# プログラミング ガイド)

サンプルソース: kw_this §

var a1 = new MySample();

Console.WriteLine(a1.theValue);

var a2 = new MySample(2);

Console.WriteLine(a2.theValue);

class MySample

{

    public int theValue { get; set; }

    public MySample(int theValue)

    {

        this.theValue = theValue;

        Console.WriteLine("コンストラクタ1号");

    }

    public MySample() : this(1)

    {

        Console.WriteLine("コンストラクタ2号");

    }

}

実行結果 §

コンストラクタ1号

コンストラクタ2号

1

コンストラクタ1号

2

リポジトリ §

https://github.com/autumn009/CSharpPrimer2

練習問題 §

 以下のプログラムの実行結果を予測してみよう。

new B();

public class A

{

    public void sub() => Console.WriteLine("A");

}

public class B:A

{

    public new void sub() => Console.WriteLine("B");

    public B()

    {

        ((A)(this)).sub();

    }

}

  1. A
  2. B
  3. AとB
  4. BとA
  5. コンパイルエラー

[[解答]]

Facebook

キーワード【 川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!
【new_C#入門・全キーワード明快解説!】の次のコンテンツ
2022年
01月
25日
型メンバーのオーバーロード: 同じ名前のメソッドが2つあるぞ!
3days 0 count
total 805 count
【new_C#入門・全キーワード明快解説!】の前のコンテンツ
2022年
01月
23日
staticキーワード: 静的なメンバーは作らなくても1つある。2つ以上は作れない
3days 0 count
total 763 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20220124113555
サイトの表紙【new_C#入門・全キーワード明快解説!】の表紙【new_C#入門・全キーワード明快解説!】のコンテンツ全リスト 【new_C#入門・全キーワード明快解説!】の入手全リスト 【new_C#入門・全キーワード明快解説!】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.