什么是更有说服力的方式来做到这一点?

时间:2016-02-01 18:04:43

标签: vb.net

有没有更好的方法来编写这样的代码?

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

2 个答案:

答案 0 :(得分:1)

雄辩的方式实际上就是这样:

// removed code was here

我认为避免完全编写这种代码至关重要。它不仅是多余的,因为你正在挑选一个非常有用的集合,但如果集合需要,你也可能添加与维护代码相关的负担以后增加或减少其容量。最后,您使代码对其他人的可读性降低。

你必须克服仅操纵内在CTS数据类型(如整数,字符串或布尔值)的冲动。

答案 1 :(得分:0)

有很多可能使这个“更好”。这是我的建议:

  1. 声明一个Integers数组,其大小设置为您需要的数量。

  2. 循环遍历每个索引,如果selectedDisciplines.Count大于或等于当前索引加1,则将数组中的相应整数设置为当前selectedDiscipline的值。

  3. 如果selectedDisciplines.Count小于当前索引,请停止循环。

  4. 代码示例:

    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...