当前位置 : 主页 > 编程语言 > c语言 >

我可以简化这个VB.net代码,所以我不必重复这么多吗?

来源:互联网 收集:自由互联 发布时间:2021-06-24
我正在创建一个调度算法.我的代码变得越来越长.任何人都可以建议我如何让我的代码更短,因为我必须在下面多次重复相同的事情,其他外部是4或5我还要重复它: 以下是我的部分代码的
我正在创建一个调度算法.我的代码变得越来越长.任何人都可以建议我如何让我的代码更短,因为我必须在下面多次重复相同的事情,其他外部是4或5我还要重复它:

以下是我的部分代码的示例:

ElseIf Val(jobs_txt.Text) = 3 Then
            If (a < b And b < c) Then
                awt1_lbl.Text = Val(0)
                awt2_lbl.Text = a
                awt3_lbl.Text = a + b
                y = (Val(awt1_lbl.Text) + Val(awt2_lbl.Text) + Val(awt3_lbl.Text)) / 3
                awt_ans.Text = y
            ElseIf (a < c And c < b) Then
                awt1_lbl.Text = Val(0)
                awt2_lbl.Text = a + b
                awt3_lbl.Text = a
                y = (Val(awt1_lbl.Text) + Val(awt2_lbl.Text) + Val(awt3_lbl.Text)) / 3
                awt_ans.Text = y
            ElseIf (b < a And a < c) Then
                awt1_lbl.Text = a
                awt2_lbl.Text = Val(0)
                awt3_lbl.Text = a + b
                y = (Val(awt1_lbl.Text) + Val(awt2_lbl.Text) + Val(awt3_lbl.Text)) / 3
                awt_ans.Text = y
            ElseIf (b < c And c < a) Then
                awt1_lbl.Text = a + b
                awt2_lbl.Text = Val(0)
                awt3_lbl.Text = a
                y = (Val(awt1_lbl.Text) + Val(awt2_lbl.Text) + Val(awt3_lbl.Text)) / 3
                awt_ans.Text = y
            ElseIf (c < a And a < b) Then
                awt1_lbl.Text = a
                awt2_lbl.Text = a + b
                awt3_lbl.Text = Val(0)
                y = (Val(awt1_lbl.Text) + Val(awt2_lbl.Text) + Val(awt3_lbl.Text)) / 3
                awt_ans.Text = y
            ElseIf (c < b And b < a) Then
                awt1_lbl.Text = a + b
                awt2_lbl.Text = a
                awt3_lbl.Text = Val(0)
                y = (Val(awt1_lbl.Text) + Val(awt2_lbl.Text) + Val(awt3_lbl.Text)) / 3
                awt_ans.Text = y
            End If
首先,看起来你可以移动最后两行

y = (Val(awt1_lbl.Text) + Val(awt2_lbl.Text) + Val(awt3_lbl.Text)) / 3
awt_ans.Text = y

在if-then-else之外,因为他们在所有六种情况下做同样的事情.

接下来,因为看起来你的代码将Val(0)分配给具有最小键的项,ab分配给中间的值,并且a分配给最大的键,所以可以将a,b和c分配给键数组,awt1_lbl,awt2_lb和awt3_lbl到一个值数组中,并对它们进行排序,如下所示:

Dim keys() As String = { a, b, c }
Dim labels() As LabelType = { awt1_lbl, awt2_lb, awt3_lbl } // put real label type there
Array.Sort(keys, labels)
labels(0).Text = Val(0)
labels(1).Text = a+b
labels(2).Text = a
网友评论