SUPERCAT.DEV

Benvenut* sul mio blog

CSHARP

Enum vs Class

07-03-2025

Usare una classe invece di un enum ha qualche vantaggio

Module Module1

    Public Class StatoServizio

        Public Shared OK As StatoServizio = New StatoServizio() With {.Id = 0, .Nome = "Funzionante"}
        Public Shared KO As StatoServizio = New StatoServizio() With {.Id = 1, .Nome = "Rotto"}

        Private _id As Integer
        Private _nome As String

        Public Property Id As Integer
            Get
                Return _id
            End Get
            Set(ByVal value As Integer)
                _id = value
            End Set
        End Property

        Public Property Nome As String
            Get
                Return _nome
            End Get
            Set(ByVal value As String)
                _nome = value
            End Set
        End Property

    End Class

    Public Class Oggetto
        Public nome As String = String.Empty
        Public stato As StatoServizio = StatoServizio.OK

        Public Sub New(nome As String, stato As StatoServizio)
            Me.nome = nome
            Me.stato = stato
        End Sub

    End Class

    Sub Main()
        Dim apparato1 As Oggetto = New Oggetto("apparato1", StatoServizio.OK)
        Dim apparato2 As Oggetto = New Oggetto("apparato2", StatoServizio.KO)

        Console.WriteLine($"{apparato1.nome} {apparato1.stato.Nome}")
        Console.WriteLine($"{apparato2.nome} {apparato2.stato.Nome}")
        Console.ReadLine()
    End Sub

End Module

Risultato:

apparato1 Funzionante
apparato2 Rotto