じゃんぬねっと日誌

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

目次

Blog 利用状況

ニュース

不況すぎる件。

スポンサードリンク

運営サイト

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

書庫

列挙体の正体は Enum を継承したクラス

前の記事に続く第二弾。(^^;)
突っ込みがくる前に書いてみた。

.NET (CLR) における列挙体の正体は、System.Enum クラスを継承した値型のクラスです。
いや、そんなことはオブジェクト ブラウザを見ればすぐに察しがつくことなのですがw
(前回の記事と同じようなこと書いてるしw)

クラスの定義で System.Enum クラスを継承しようとすると、コンパイラに叱られます。(^^;)
列挙体は暗黙的に System.Enum だけを継承できるクラスというわけです。
System.Enum 自体も System.ValueType から継承しているクラスですから当然といえば当然ですね。

下記の列挙体は、(前回は C# だったので今回は VB で書きます)

VB.NET

Namespace System

    Public Enum DayOfWeek As Integer
        Sunday    = 0
        Monday    = 1
        Tuesday   = 2
        Wednesday = 3
        Thursday  = 4
        Friday    = 5
        Saturday  = 6
    End Enum

End Namespace

次のようなクラスであると考えることができます。
NotInheritable クラスになっているのは継承ができないからです。

VB.NET

Namespace System

    Public NotInheritable Class DayOfWeek : Inherits System.Enum
        Public Const Sunday    As Integer = 0
        Public Const Monday    As Integer = 1
        Public Const Tuesday   As Integer = 2
        Public Const Wednesday As Integer = 3
        Public Const Thursday  As Integer = 4
        Public Const Friday    As Integer = 5
        Public Const Saturday  As Integer = 6
    End Class

End Namespace

た、多分ね。(^^;)

関連記事

投稿日時 : 2005年12月25日 14:41

コメントを追加

# re: 列挙体の正体は Enum を継承したクラス 2005/12/25 17:55 なか

てすと

# re: 列挙体の正体は Enum を継承したクラス 2005/12/25 19:16 じゃんぬ

>なかの人
テスト乙w

# re: 列挙体の正体は Enum を継承したクラス 2005/12/25 20:47 シャノン

.NET Framework で特殊なクラスは、Array、Enum、ValueType、(MultiCast)Delegate の4つでしたっけ。

#というか Enum って ValueType の派生だったんですね。

# re: 列挙体の正体は Enum を継承したクラス 2005/12/25 21:05 じゃんぬ

> というか Enum って ValueType の派生だったんですね。

まあ、値型は全部そうッスからね。

# re: 列挙体の正体は Enum を継承したクラス 2005/12/25 21:50 囚人

>#というか Enum って ValueType の派生だったんですね。

ぬぉ~TT

ValueType から派生したクラスはシールでしょぉ!
Enum は何で抽象なのよぉ!!
特別とか言わないで、何とか辻褄合わせてほしかった…。

# re: 列挙体の正体は Enum を継承したクラス 2005/12/25 22:36 じゃんぬ

シール クラスにしちゃったら、何もできなくなっちゃうじゃんw

# re: 列挙体の正体は Enum を継承したクラス 2005/12/25 22:58 もりた

でも、インタフェースが使用できてしまうんですよね(ボソ

# re: 列挙体の正体は Enum を継承したクラス 2005/12/25 23:32 じゃんぬ

いや、だからね、そのあたりは、制限されているから、
暗黙的にしか継承できないんじゃないですかーw

でなきゃ、struct とか enum とかキーワード要らないッスよー。
何なら、Java みたいにシンプルにいきますか? こら (w

# re: 列挙体の正体は Enum を継承したクラス 2005/12/25 23:58 シャノン

> Java みたいにシンプルにいきますか? こら (w

望むところだw(コラコラ

# re: 列挙体の正体は Enum を継承したクラス 2005/12/26 0:23 名無しぃシャープ

おまいら、今日から、プロパティ構文、enum、struct、デリゲート全部没収だ。
そうそう、ついでだから明日からJ#を使うようにw

-以上だ。

タイトル  
名前  
URL
コメント