tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: [解決] クラスの記述法
投稿日: 2007/09/07(Fri) 13:26
投稿者魔界の仮面弁士
> FunctionとSub がOverloads できるんだって意外ですね。
IL 的には、戻り値の型が void 型か bool 型かの違いしか無いですしね。

ちなみに .NET そのものは、「引数が同一で戻り値の型のみが異なるオーバーロード」
さえもサポートしています。C# や VB では実装/利用できませんけれどね。


> 警告した方がいいんではないかなぁ>MS
> Option Strict On なんだから。
『曖昧な型』の問題ではないので、Option Strict に含めるのは個人的には違和感…。(^^;



>>>>> 質問2.継承先でMyBaseとMeの使い分けが分かりません。
少なくとも、
  Public Overrides Function Method1() As String
    Return "[" & MyBase.Method1() & "]"
  End Function
のような処理で、この MyBase を Me や MyClass にできないという事はわかりますよね。

>>> 理解できました。Me は場合によってMyBaseかMyClassのどちらかになる(言い方変だけど)。

"言い方変だけど" という事ですので、表現の曖昧さによるものかも知れませんが、
そのような理解の仕方には、幾許かの誤解を含んでいそうな気がします。
「MyBaseになる場合」と「MyClassになる場合」の具体例を出してみてもらえますか?


たまたま、MyBase や MyClass と同じ結果を返す場合もあるというだけであって、
別に、Me が MyBase や MyClass に変化するというわけではありませんよ。


たとえば、下記のサンプルにおいて『 MsgBox(New Poodle().Test()) 』を実行すると、
+--------------------------
|      Me:プードルクラス
|  MyBase:動物クラス
| MyClass:犬クラス
+--------------------------
という結果となり、それぞれが別の意味を持っていることを確認できます。


'===================
Public Class Animal
    Public Overrides Function ToString() As String
        Return "動物クラス"
    End Function
End Class

Public Class Dog
    Inherits Animal
    Public Overrides Function ToString() As String
        Return "犬クラス"
    End Function
    Public Function Test() As String
        With New System.Text.StringBuilder()
            .AppendLine("     Me:" &      Me.ToString())
            .AppendLine(" MyBase:" &  MyBase.ToString())
            .AppendLine("MyClass:" & MyClass.ToString())
            Return .ToString()
        End With
    End Function
End Class

Public Class Poodle
    Inherits Dog
    Public Overrides Function ToString() As String
        Return "プードルクラス"
    End Function
End Class

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。