vb.net - 如何将枚举添加到列表中

标签 vb.net list class loops enums

我有一个名为 Card 的类,其属性为 CardNumbers

Private _number As CardNumbers
    Public Property Number() As CardNumbers
        Get
            Return _number
        End Get
        Set(ByVal value As CardNumbers)
            _number = value
        End Set
    End Property

我有一个卡号枚举,它被用作 Card 的属性。

Enum CardNumbers
    Ace = 1
    Two = 2
    Three = 3
    Four = 4
    Five = 5
    Six = 6
    Seven = 7
    Eight = 8
    Nine = 9
    Ten = 10
    Jack = 11
    Queen = 12
    King = 13
End Enum

现在,我有一个循环将 CardNumbers 插入到 Dim Cards As New List(Of Card) 中,但我不知道如何添加每个 CardNumbers 进入列表。研究了一段时间了有人可以帮忙吗?谢谢。

更新: 我现在有这段代码来添加创建类 Card 的实例,然后添加到名为 Cards 的 Card 列表中:

Dim c As New Card()
        For Each n As CardNumber.CardNumbers In [Enum].GetValues(GetType(CardNumber.CardNumbers))
            c.Number = n
            Cards.Add(c)
        Next

但是随后,我收到了 NullReferenceException 错误。

最佳答案

一些可用于卡片和套牌的类。

Public Enum aRank
    Two = 2
    Three = 3
    Four = 4
    Five = 5
    Six = 6
    Seven = 7
    Eight = 8
    Nine = 9
    Ten = 10
    Jack = 11
    Queen = 12
    King = 13
    Ace = 14
End Enum

Public Enum aSuit
    Clubs
    Diamonds
    Hearts
    Spades
End Enum

Class Card
    Private _rank As aRank
    Private _suit As aSuit

    Public ReadOnly Property Rank As aRank
        Get
            Return Me._rank
        End Get
    End Property

    Public ReadOnly Property Suit As aSuit
        Get
            Return Me._suit
        End Get
    End Property

    Public Sub New(rank As aRank, suit As aSuit)
        Me._rank = rank
        Me._suit = suit
    End Sub
End Class

Class DeckOfCards
    Private _deck As List(Of Card)
    Private Shared _prng As New Random

    Public Sub New()
        Me.Shuffle()
    End Sub

    Public Sub Shuffle()
        Me._deck = New List(Of Card)
        For Each r As aRank In [Enum].GetValues(GetType(aRank))
            For Each s As aSuit In [Enum].GetValues(GetType(aSuit))
                Me._deck.Add(New Card(r, s))
            Next
        Next
    End Sub

    Public Function GetCard() As Card
        If Me.CardsRemaining > 0 Then
            Dim idx As Integer = DeckOfCards._prng.Next(Me._deck.Count)
            Dim rvcard As Card = Me._deck(idx)
            Me._deck.RemoveAt(idx)
            Return rvcard
        Else
            '''TODO
            'code for no more cards error
            Return Nothing
        End If
    End Function

    Public ReadOnly Property CardsRemaining As Integer
        Get
            Return Me._deck.Count
        End Get
    End Property
End Class

关于vb.net - 如何将枚举添加到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25518034/

相关文章:

python-3.x - Python 3 - 将字典动态嵌套到给定未知数量类别的列表中

python - 替换列表中的多个单词

ios - NSDate 是类成员 : [NSDate class] returns false?

c++ - 使用另一个类成员的类成员函数指针

c# - 编写 Windows 桌面应用程序 (.exe) - 这听起来对吗?

vb.net - 如何在 VB.NET 中制作文档字符串?

c# - 如何使用 CV_8UC1 类型保存 OpenCvSharp.Mat?

java - kryo 列表序列化

java - MySQL 和 SQLite 类

c# - Windows API 和 .net 语言