じゃんぬのどっとてきすと

雑記とネタと時々プログラミング

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  982  : 記事  4  : コメント  16209  : トラックバック  277

ニュース

My Website

初心者向けのサイトです。

C# と VB.NET の入門サイト

最近のできごと

少し前に女のコが生まれました。家事と育児と仕事にと奮起しています。めちゃくちゃかわいいです。あと Blog の更新は全然してませんが、Twitter とかでアホなこと呟いています。見つけることができたら、ぜひフォローしてあげてください。けっこう喜びます。

Sponsored Link1

Sponsored Link2

Archive

書庫

VB.NET の MeMyClassMyBase 違い、皆さんはご存知ですよね? 先日、講義をやらさせて頂いた時に、MyBase はともかく、MeMyClass の違いについてご存知の方が意外と少ないという事実を知りました。

違いを実証するためには、以下のようなクラスを書きます。

VB.NET - Me、MyClass、MyBase の違いを実証するための基底クラス

'/** 基底クラス */
Public Class BaseClass
    Protected Overridable Function GetString() As String
        Return "BaseClass.GetString()"
    End Function

    ' テストとして呼ばれるメソッド
    Public Sub BaseClassMethod()
        System.Console.WriteLine(Me.GetString())
        System.Console.WriteLine(MyClass.GetString())
    End Sub
End Class

VB.NET - Me、MyClass、MyBase の違いを実証するための継承クラス

'/** 継承されたクラス */
Public Class ExtendsClass
    Inherits BaseClass

    ' GetString メソッドをオーバーライド
    Protected Overrides Function GetString() As String
        Return "ExtendsClass.GetString()"
    End Function

    ' テストとして呼ばれるメソッド
    Public Sub ExtendsClassMethod()
        System.Console.WriteLine(Me.GetString())
        System.Console.WriteLine(MyClass.GetString())
        System.Console.WriteLine(MyBase.GetString())
    End Sub
End Class

では、テスト用のメソッドを呼んでみましょう。

VB.NET - Me、MyClass、MyBase の違いを実証するためのテスト コード

' テスト用のメソッド
Private Shared Sub ExecuteTest()
    Dim instance As New ExtendsClass()

    instance.ExtendsClassMethod()  ' 継承クラスのメソッドを呼び出す
    instance.BaseClassMethod()     ' 基底クラスのメソッドを呼び出す
End Sub

Me からメンバを呼び出した場合は、呼び出した場所がどこであれインスタンスが示すクラスにあるメソッドを呼び出します。MyClass からメンバを呼び出した場合は、インスタンスの型が何であれ呼び出したクラスにあるメソッドを呼び出します。

説明不要だとは思いますが、MyBase は、そのインスタンスが示す型のひとつ上の基底クラスを指します。今回の場合、ExtendsClass の MyBase は BaseClass になります。

よって、結果は、

VB.NET - ExtendsClassMethod メソッドの呼び出し

  • ExtendsClass.GetString()
  • ExtendsClass.GetString()
  • BaseClass.GetString()

VB.NET - BaseClassMethod メソッドの呼び出し

  • ExtendsClass.GetString()
  • BaseClass.GetString()

になります。

投稿日時 : 2006年11月9日 11:33

コメント

# re: VB.NET の Me、MyClass、MyBase の違い 2006/11/10 11:14 R・田中一郎
この違いを完全に理解して使いこなせたとしても、やっぱり後から見ると訳が分からなくなりそうです。

VB.NET で書くことは、あまり無いとは思うのですが、仮にあったとして MyClass は使わないようにしたいなぁ、などと思ってみたり^^;

# re: VB.NET の Me、MyClass、MyBase の違い 2006/11/10 12:10 always29
こんにちは。

これ、面白いですね。
BaseClassとExtendsClassの間に、MiddleRankClassとかかますと、そこではMe、MyClass、MyBaseが、それぞれ違うクラスを示すことを、よりくっきり説明できますね。
Meを使う上での注意点や、基底クラスからインスタンスクラスのメソッドが呼べることが、よくわかります。

# re: VB.NET の Me、MyClass、MyBase の違い 2006/11/10 16:47 じゃんぬ
MyBase は、流石に知られているので省略しました。
すべての違いを説明する予定で加えましたが、MyBase は、MyClass と違ってややこしくはないので、言葉で説明するだけに変えさせて頂いています。

# re: VB.NET の Me、MyClass、MyBase の違い 2008/05/26 16:47 そなんだ
そなんだ。
でも、あまり使わないですね。

# tLPesngiHfD 2014/07/18 21:14 http://crorkz.com/
tIyEJt Great, thanks for sharing this blog post. Really Great.

# GsxOjADmQvzJmxGq 2014/09/08 23:00 https://www.youtube.com/watch?v=mSbbytrVLHY
you've got an incredible blog here! would you prefer to make some invite posts on my weblog?

# JxDkBCWGYEkKvgqEg 2014/09/18 15:57 http://madisonmotherlove.info/story.php?id=33309
IvPm8v I truly appreciate this blog.Much thanks again. Will read on...

# wrYjDYHLMVGZGHBQSX 2015/04/19 3:25 sally
nDmN7E http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com

# cfxrvdfugnv@docomo.ne.jp 2017/06/26 15:33 長財布 ブランド激安 コピー
日本的な人気と信頼を得ています
当社の商品は絶対の自信が御座います
スタイルが多い、品質がよい、価格が低い!
迅速、確実にお客様の手元にお届け致します
実物写真、付属品を完備しております
ご注文を期待しています!

# fhoqxjzp@softbank.jp 2017/09/21 4:25 人気ブランド
注文した翌日には届きました!
Aランクとのことでしたが新品みたいでした!
大満足です!
散々悩んでコチラで購入を決めたかいがありました。
また機会があれば利用します!
人気ブランド http://www.copysale.net

Post Feedback

タイトル
名前
Url:
コメント: