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