R.Tanaka.Ichiro's Blog

主にC# な話題です

目次

Blog 利用状況

ニュース

R流、一瞬でわかる.NETオブジェクト指向プログラミング入門11

http://blogs.wankuma.com/rti/archive/2007/08/20/91083.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門10

http://blogs.wankuma.com/rti/archive/2007/08/14/90238.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門9

http://blogs.wankuma.com/rti/archive/2007/08/10/89801.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門8

http://blogs.wankuma.com/rti/archive/2007/08/08/89397.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門7

http://blogs.wankuma.com/rti/archive/2007/08/07/89226.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門6

http://blogs.wankuma.com/rti/archive/2007/08/02/88399.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門5

http://blogs.wankuma.com/rti/archive/2007/07/31/87955.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門4

http://blogs.wankuma.com/rti/archive/2007/07/30/87742.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門3

http://blogs.wankuma.com/rti/archive/2007/07/26/87105.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門2

http://blogs.wankuma.com/rti/archive/2007/07/25/86988.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門1

の続きです。

どこからフォローすれば良いのかわからないので、先頭から順に行ってます。

今回は

System.Objectとは?

というテーマです。

System.Object は、全てのクラスが継承しているクラスです。
ですから、このクラスのメンバというのは、基本的に全てのクラスに属するメンバとなります。
ちなみに object は、System.Object のエイリアスです。

public Object();
コンストラクタです。
全てのオブジェクトインスタンスが生成される都度に呼び出されることになる訳です。


public virtual bool Equals(object obj)
public static bool Equals(object obj1, object obj2)
オーバーロードになっています。
参照型の場合は、両者の Object インスタンスが等しいかどうかを判断します。
値型の場合は、両者の値が等しいかどうかを判断します。


protected override void Finalize()
Object がガベージ コレクションに収集される際に呼び出されます。
ここで、Object がアンマネージなリソースを解放することができます。

public virtual int GetHashCode()
インスタンスのハッシュコードを返します。
既定のハッシュコードは、均等性も一意性も保障されていません。
有効なハッシュ値が必要となるクラスでは、自身で有効なハッシュ値を返すようにします。

public Type GetType()
現在のインスタンスの型参照を取得します。これを利用するとインスタンスの構造を調べることができます。
リフレクションなどで使うこともありますね。

protected object MemberwiseClone()
現在の Object の簡易コピーを作成します。

public static bool ReferenceEquals(objectobj1, object obj2)
指定した2つの Object のインスタンスが同一かどうかを判断します。

public virtual string ToString()
現在の Object を表す String を返します。
既定の戻り値は、現在のインスタンスの型を表す完全修飾名になります。
このため、必要に応じてオーバーライドして、適切な文字列を返すようにしましょう。

以上、お馴染みのメンバーでした。
ざっと見ると、継承したクラス側で独自な処理を行った方が良いメンバは virtual 修飾子 が付いています。

しかし、Finalize() だけは override になっています(少なくとも、僕の手持ちの本には、そう書かれています)
全てのクラスの基本となる Object クラスのメンバにおいて、何故 override 修飾子がついているのでしょうか?
実は System.Object は実はもっと他のクラスを継承しているのか、僕の手持ちの本が間違っているのか、あるいはもっと違う深い理由があるのかはわかりません。

誰かに答えを教えて欲しいです。

ちなみに、MSDNライブラリー以下のリンク先を見ると、VB の例に Overridable と記述されています。

http://msdn2.microsoft.com/ja-jp/library/system.object.finalize(VS.80).aspx

これって C# で言うところの virtual ですよね?

やっぱり、virtual が正しいのでしょうか。

投稿日時 : 2007年8月27日 15:08

Feedback

# re: R流、一瞬でわかる.NETオブジェクト指向プログラミング入門11 2007/08/27 15:26 かずくん

>ちなみに、MSDNライブラリー以下のリンク先を見ると
えー?どこどこ?何ページ目?

# re: R流、一瞬でわかる.NETオブジェクト指向プログラミング入門11 2007/08/27 15:29 R・田中一郎

URL 貼り忘れてました^^;

# re: R流、一瞬でわかる.NETオブジェクト指向プログラミング入門11 2007/08/27 15:34 かずくん

VBの例がどこを指しているのか分からないけど、構文のとこを指しているなら、
Overridesにはなってないよ、Overridableにはなってるけど。
#Firefoxでは見えない罠?

# re: R流、一瞬でわかる.NETオブジェクト指向プログラミング入門11 2007/08/27 15:41 R・田中一郎

間違えました^^;
Overridable です。

# re: R流、一瞬でわかる.NETオブジェクト指向プログラミング入門11 2007/08/27 16:34 かるあ

そろそろまとめページが欲しいところ

# re: R流、一瞬でわかる.NETオブジェクト指向プログラミング入門11 2007/08/27 19:20 かずくん

>ちなみに、MSDNライブラリー以下のリンク先を見ると、VB の例に Overridable と記述されています。
>これって C# で言うところの virtual ですよね?
>やっぱり、virtual が正しいのでしょうか。

♪分からなければ、調べましょう-
Googleさまに「vb c# キーワード 比較」でお伺いを立てたら、
http://msdn2.microsoft.com/ja-jp/library/zwkz3536(VS.80).aspx
が一番目にヒット。
Overridableをみれば、一目瞭然っと。

# R流、一瞬でわかる.NETオブジェクト指向プログラミング入門12 2007/08/28 13:56 R.Tanaka.Ichiro's Blog

R流、一瞬でわかる.NETオブジェクト指向プログラミング入門12

# re: R流、一瞬でわかる.NETオブジェクト指向プログラミング入門11 2007/08/28 14:00 R・田中一郎

かるあ さん

>そろそろまとめページが欲しいところ

欲しいところでですね。そして、作る時間も欲しいところです。

-----------------------------------------------------------------
かずくん

>Overridableをみれば、一目瞭然っと。

やはり virtual キーワードが正しいという結論になるのでしょうか。
そして、僕の持っている本が間違っていたという結論か・・・

# R流、一瞬でわかる.NETオブジェクト指向プログラミング入門13 2007/08/31 14:03 R.Tanaka.Ichiro's Blog

R流、一瞬でわかる.NETオブジェクト指向プログラミング入門13

# R流、一瞬でわかる.NETオブジェクト指向プログラミング入門13 2007/08/31 14:30 R.Tanaka.Ichiro's Blog

R流、一瞬でわかる.NETオブジェクト指向プログラミング入門13

# R流、一瞬でわかる.NETオブジェクト指向プログラミング入門14 2007/09/06 18:55 R.Tanaka.Ichiro's Blog

R流、一瞬でわかる.NETオブジェクト指向プログラミング入門14

タイトル
名前
Url
コメント