加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 07:18:25 所属栏目:百科 来源:网络整理
导读:我正在创建一个调度算法.我的代码变得越来越长.任何人都可以建议我如何让我的代码更短,因为我必须在下面多次重复相同的事情,其他外部是4或5我还要重复它: 以下是我的部分代码的示例: ElseIf Val(jobs_txt.Text) = 3 Then If (a b And b c) Then awt1_lbl.T
我正在创建一个调度算法.我的代码变得越来越长.任何人都可以建议我如何让我的代码更短,因为我必须在下面多次重复相同的事情,其他外部是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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读