完成计算机科学学位后,我找到了一份软件开发人员的工作(喔!)。通过大学我非常依赖于Web编程,坚持Javascript和PHP(在程序意义上)。我现在也在Visual Basic .NET中跳转到面向对象的编程。
我想从最好的做法开始,而不是我有一个简单的场景我想知道最好的方法是什么。
我们说我有一个名为“Config.vb'在创建和创建“Sub Load'从注册表中读取密钥。 密钥包括:' Fname',' Lname','地址1','地址2','城市',&# 39; shoesize'
所以我想存储这些密钥及其值可以访问我的Main.vb。
第一种方法是声明6个变量来存储值,所以
Dim firstName = regKey("firstname").value
Dim lastName = regKey("lastname").value...
然后使用访问器方法来检索这些值
Property ReadOnly getFirstname As String
Get
Return firstName
End Get
End Property
但写出6个方法似乎太冗长了。我很可能是错的,这就是我要问的原因;这是访问这些变量的最佳方式吗?
可替换地,
我想的可能只是在一个Dictionary变量中包含所有键和值,因此它将包含所有键及其值,然后只需要一个函数接受键字符串并返回值,如:
Private Function getkey(key) As String
Return dictionary.Item(key)
End Function
这可能是我接近它的方式。
任何指导或让我知道你做这件事的方式都会帮助我和其他人更好地学习!
感谢。
答案 0 :(得分:2)
正如Plutonix所说。在注册表中存储数据不是一个好主意。取决于您希望如何访问数据。如果您只想一次性阅读有关大量(大概)人的所有数据,那么您可以查看object serialization或者如果您正在处理大量数据,请查看数据库。一个好的开始可以找到基本OOP here。这是一篇相当古老的文章,但仍然可以正常工作。
就您的数据而言,您最好定义一个新类。喜欢这个
Friend Class Person
Dim _firstName As String
Dim _lastName As String
Public Property FirstName
Set(value)
_firstName = value
End Set
Get
Return _firstName
End Get
End Property
Public Property LastName
Set(value)
_lastName = value
End Set
Get
Return _lastName
End Get
End Property
End Class
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim p1 As New Person
p1.FirstName = regkey("firstname")
p1.LastName = regkey("lastname")
End Sub
当然,如果您与多个人打交道,那么您最好创建一个列表。而不是将p1声明为人的新实例,而不是像这样删除列表
Dim peopleList As New List(Of Person)
并添加人员列表
Dim tempPerson As New Person
tempPerson.FirstName = regkey("firstname")
tempPerson.LastName = regkey("lastname")
peopleList.Add(tempPerson)
或
tempPerson.FirstName = "Fred"
tempPerson.LastName = "Perry"
peopleList.Add(tempPerson)
OOP的优点在于,在类中,您可以声明用于处理类的每个实例中的数据的方法(过程)。假设你在你的班级中有一个名为DOB的属性 - 列出这个
Dim _DateOfBirth As Date
Public Property DOB As Date
Set(value As Date)
_DateOfBirth = value
End Set
Get
Return _DateOfBirth
End Get
End Property
您可以在类中创建一个函数来返回此人的年龄,而无需随着时间的推移存储和更新年龄。像这样:
Public Function Age() As Integer
Age = DateDiff(DateInterval.Year, _DateOfBirth, System.DateTime.Now)
Return Age
End Function
要获得临时工的年龄,请使用此
Dim tempPerson As New Person
tempPerson.FirstName = "Fred"
tempPerson.LastName = "Perry"
tempPerson.DOB = CDate("8/12/1967")
MessageBox.Show("Age of the person is " & tempPerson.Age)
得爱OOP!