Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
コードの違いは何ですか?
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30488#CommentId83956
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2020/5/4 10:10:33
『記述方法が違うだけで同じことを表現しています』という点は
るきおさんの投稿の通りですが、少し修正・補足させてください。
> 名前空間も含めたフルネーム(完全修飾名)でクラス名を記述することがしばしばあり、
> それがObjectとSystem.Object、EventArgsとSystem.EventArgsの違いです。
上記は間違いとも言い切れませんが、正確では無いと思います。
確かに EventArgs と System.EventArgs の違いについては、
【名前空間の記述を省略しているかどうか】です。
(VB2010 以降では Global.System.EventArgs と書くこともできます)
記述が省略されているだけで、EventArgs と System.EventArgs は完全に同一です。
しかし Object と System.Object の関係は、それとは異なります。
Object と System.Object が完全に同一の物であるという点では変わりないのですが、
その理由は名前空間の指定が省略されているからではありません。
Object は「Visual Basic の組み込み型(プリミティブ型)」であり、
System.Object は「.NET Framework の型」という違いによるものです。
EventArgs は青緑で表示されていますが、
Object は青ですよね。
(先の回答では、この違いが考慮されていませんでした)
青緑 なのは「.NET のデータ型」を表しており、
青 の方は「VB のキーワード」を表しています。
VB の組み込み型である Integer 型は、.NET の System.Int32 構造体と完全に同一です。
VB の組み込み型である Date 型は、.NET の System.DateTime 構造体と完全に同一です。
VB の組み込み型である String 型は、.NET の System.String クラスと完全に同一です。
VB の組み込み型である Object 型は、.NET の System.Object クラスと完全に同一です。
sender As System.Object において、System 名前空間を省略するのであれば、
sender As [Object] のように記述することになります。(こうすれば、Object も青緑になります)
※この場合の角括弧は、VB のキーワードを識別子とするためのエスケープ表現です。
また、どうして System 名前空間を省略できるのかは、
プロジェクトのプロパティを開き、[参照]タブを開いたところにある
[インポートされた名前空間]の欄で「System」にチェック☑が付いているからです。
蛇足情報としてもう一つ。
イベント ハンドラーのコードにおいては、「ByVal の有無」「System. の有無」以外にも、
Form1_Load などにおいて「Handles MyBase.Load」と「Handles Me.Load」の違いが
生じるケースがあるのは御存じでしょうか。
たとえば、新規の Form で、コードエディタ上部のドロップダウンを
[プロジェクト名] / [(Form1 イベント)] / [Load]
と選んだ場合は「Me.Load」が使われます。
一方、フォームデザイナをダブルクリックしたり、
プロパティ ウィンドウの[イベント]から [Load]を選んだ場合には、
「MyBase.Load」が使われます。
MyBase と Me の違いは、継承フォーム利用時などに影響を与えるものですが、
利用頻度としては低いので、普段は気にしなくても問題ありません。
しかし厳密には別物ですし、自フォーム上に
「Public Shadows Custom Event Load As EventHandler」
などを書いていた場合、MyBase.Load と Me.Load は異なる結果になりえます。