有没有更好的方法来编写这样的代码?
Dim selectedDisciplines As List(Of ListItem)
dim item1 as integer
dim item2 as integer
dim item3 as integer
dim item4 as integer
dim item5 as integer
dim item6 as integer
/* selectedDisciplines is either filled or not */>
If selectedDisciplines.Count >= 1 Then
item1 = selectedDisciplines.Item(0).Value
End If
If selectedDisciplines.Count >= 2 Then
item2 = selectedDisciplines.Item(1).Value
End If
If selectedDisciplines.Count >= 3 Then
item3 = selectedDisciplines.Item(2).Value
End If
If selectedDisciplines.Count >= 4 Then
item4 = selectedDisciplines.Item(3).Value
End If
If selectedDisciplines.Count >= 5 Then
item5 = selectedDisciplines.Item(4).Value
End If
If selectedDisciplines.Count = 6 Then
item6 = selectedDisciplines.Item(5).Value
End If
答案 0 :(得分:1)
雄辩的方式实际上就是这样:
// removed code was here
我认为避免完全编写这种代码至关重要。它不仅是多余的,因为你正在挑选一个非常有用的集合,但如果集合需要,你也可能添加与维护代码相关的负担以后增加或减少其容量。最后,您使代码对其他人的可读性降低。
你必须克服仅操纵内在CTS数据类型(如整数,字符串或布尔值)的冲动。
答案 1 :(得分:0)
有很多可能使这个“更好”。这是我的建议:
声明一个Integers
数组,其大小设置为您需要的数量。
循环遍历每个索引,如果selectedDisciplines.Count
大于或等于当前索引加1,则将数组中的相应整数设置为当前selectedDiscipline
的值。
如果selectedDisciplines.Count
小于当前索引,请停止循环。
代码示例:
Dim items(6 - 1) As Integer 'In Visual Basic you should always make it one less than what you want when you're declaring arrays.
For i = 0 To items.Count - 1
If selectedDisciplines.Count >= (i + 1) Then
items(i) = selectedDisciplines.Item(i).Value
Else
Exit For
End If
Next
使用这些作为参数的示例:
稍后当您想将这些作为参数/参数传递时,您只需要执行以下操作:
MethodHere(items(0), items(1), items(2), items(3), items(4), items(5)) 'and so on...