如何为创建的每个实例创建一个唯一的类成员?

时间:2013-11-06 14:07:49

标签: vb.net class oop object

我的班级成员“用户名”对于创建的所有“卖家”必须是唯一的吗?我可以在课堂上实现这个吗?还是主要的?这两个类成员也不能为空或包含空格。我应该将所有对象存储在列表中,然后验证所述用户名是否已存在?我很困惑我应该把它放在哪里。

Public Class Seller

Private _username As String
Private _password As String

Public Sub New(aname As String, apassword As String)
    Me.Password = apassword
    Me.UserName = anom
End Sub

Public Property Username As String
    Get
        Return _username
    End Get
    Set(value As String)
        Dim test As String = value
        test.Replace(" ", "")
        test.Trim()
        If (test <> value Or value = " ") Then
            Throw (New ArgumentException("Username cannot be empty or contain spaces")  
        Else
            _username = value
        End If
    End Set
End Property

Public Property Password As String
    Get
        Return _password
    End Get
    Set(value As String)
        Dim test As String = value
        test.Replace(" ", "")
        test.Trim()
        If (test <> value Or value = " ") Then
            Throw (New ArgumentException("Password cannot be empty or contain spaces")  
        Else
            _password = value
        End If

    End Set
End Property
End Class

谢谢

2 个答案:

答案 0 :(得分:2)

考虑面向对象的设计关于责任和“需要知道”的原则。

  • 每个Seller对象都有责任确保自己的唯一性吗?
  • 每个Seller对象检查所有其他Seller对象是否可接受/适当 - 即使知道它们存在?或者对于这个对象更有用的是只了解自己的销售数据?

答案 1 :(得分:1)

HashSet<T>是您要查找的集合类型。

每个MSDN:

  

HashSet类提供高性能的集合操作。集合是一个不包含重复元素的集合,其元素没有特定的顺序。

注意:HashSet<T>.Add()方法返回Boolean(如果项目已添加到集合中,则True,如果项目已存在,则返回False

所以你的代码应该是这样的:

Dim theSellers As New HashSet(Of Seller)
Dim success As Boolean = theSellers.Add(New Seller())

' Was the addition of the Seller successful or not?     
If Not success Then
    ' No, so do something here for duplicates if you wish
End If