Vb.net 如何使创建的每个实例的类成员都是唯一的?
我的类成员“用户名”对于创建的所有“卖家”都必须是唯一的?我可以在课堂上实现这个吗,还是在主要课堂上实现?此外,两个类成员都不能为空或包含空格。我是否应该将所有对象存储在列表中,然后验证所述用户名是否已经存在?我不知道该把它放在哪里Vb.net 如何使创建的每个实例的类成员都是唯一的?,vb.net,class,oop,object,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)
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
公共类卖家
Private\u用户名作为字符串
私有密码作为字符串
Public Sub New(aname作为字符串,apassword作为字符串)
Me.Password=apassword
Me.UserName=anom
端接头
公共属性用户名作为字符串
得到
返回\u用户名
结束
设置(值为字符串)
作为字符串的Dim测试=值
测试。替换(“,”)
test.Trim()
如果(测试值或值=”),则
抛出(新ArgumentException(“用户名不能为空或包含空格”)
其他的
_用户名=值
如果结束
端集
端属性
作为字符串的公共属性密码
得到
返回密码
结束
设置(值为字符串)
作为字符串的Dim测试=值
测试。替换(“,”)
test.Trim()
如果(测试值或值=”),则
抛出(新ArgumentException(“密码不能为空或包含空格”)
其他的
_密码=值
如果结束
端集
端属性
末级
谢谢HashSet
是您要查找的集合类型
根据MSDN:
HashSet类提供高性能的集合操作。集合是不包含重复元素的集合,其元素没有特定顺序
注意:HashSet.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
考虑一下面向对象设计所说的责任和“需要知道”原则
- 每个
对象是否都有责任确保其自身的独特性卖家
- 每个
对象检查所有其他卖家
对象是否可以接受/合适?即使知道它们存在?或者该对象只知道自己的销售数据是否更有用卖家
列表(卖方)
中,然后在创建一个新名称之前扫描它。谢谢,非常有用。很遗憾,我不能使用哈希集,因为任务是在不使用任何数组属性的情况下手动创建列表(我应该在问题中提到它),但这是有道理的,我还没有学会。@user2960568-好吧,我希望这会对你以后有所帮助,如果你觉得答案有用,那么在你能投票的时候就可以投票了。:-)很不幸,我不能投票,因为我缺乏“声誉”,但当我有足够的时间时,我会回来的。