投稿者 魔界の仮面弁士  (社会人) 投稿日時 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 は異なる結果になりえます。