簡體   English   中英

在這樣的C#函數中使用Params是一個好習慣

[英]Using Params in function like this C# is it a good practice

功能**

private void GetComboxItems(params int[] type) 
        {   
            try
            {
                /* DEPARTMENT CODE */
                if (type[0] == 1)
                {
                    cmbDept.Items.Clear();
                    using (SFCDataContext SFC = new SFCDataContext())
                    {
                        var Dept = (from i in SFC.Systems_SettingsDepartments
                                    orderby i.Department_ID
                                    select i);

                        foreach (var q in Dept)
                        {
                            cmbDept.Items.Add(q.Department_ID);
                        }

                        SFC.Connection.Close();
                    }                    
                }
                /* CORRECTIVE ACTION RECORD CODE */
                if (type[1] == 1)
                {
                    cmbCARNo.Items.Clear();
                    using (SFCDataContext SFC = new SFCDataContext())
                    {
                        var CarNo = (from i in SFC.Systems_CARLogSheets
                                     orderby i.CARDocNo
                                     where i.PostStatus == 0
                                     select new
                                     {
                                         Code = i.CARDocNo
                                     });
                        foreach (var w in CarNo)
                        {
                            cmbCARNo.Items.Add(w.Code);
                        }

                        SFC.Connection.Close();
                    }
                }
                /* MEASUREMENT CODE */
                if (type[2] == 1)
                {
                    cmbMeas.Items.Clear();
                    using (SFCDataContext SFC = new SFCDataContext())
                    {

                        var Measure = (from i in SFC.Systems_SettingsMeasurements
                                       orderby i.Measurement_ID
                                       where i.CategoryType == "Measurement"
                                       select new
                                       {
                                           DESC = i.Measurement
                                       });
                        foreach (var e in Measure)
                        {
                            cmbMeas.Items.Add(e.DESC);
                        }
                        SFC.Connection.Close();
                    }
                }
                /* SUB-MEASUREMENT CODE */
                if (type[3] == 1)
                {
                    cmbSubMeas.Items.Clear();
                    using (SFCDataContext SFC = new SFCDataContext())
                    {
                        var SubMeas = (from i in SFC.Systems_SettingsMeasurements
                                       orderby i.Measurement_ID
                                       where i.CategoryType == "Sub-Measurement"
                                       select new
                                       {
                                           DESC = i.Measurement
                                       });
                        foreach (var r in SubMeas)
                        {
                            cmbSubMeas.Items.Add(r.DESC);
                        }
                        SFC.Connection.Close();
                    }
                }
            }
            catch (Exception ex)
            { MessageBox.Show(ex.Message.ToString()); }
        }

*表格加載**

private void frmSQMProductivityReports_Load(object sender, EventArgs e)
        {
            GetComboxItems(1, 0, 1, 0);
        }

為什么在此代碼上..我的第一個if語句為“ True”,所以它按照if語句內的代碼執行操作,然后執行。 現在第二個if語句為“ False”,它將跳過其中的函數。 但是,現在第三個if語句為“ True”,它應該與第一個相同,但是由於我檢查了幾次,它跳過了if語句中的函數,為什么呢? 我嘗試查看它的代碼中是否有錯誤,對我來說似乎沒問題。

根據您的輸入,滿足條件的if條件是第一個和第三個條件。.請注意,如果引發異常,則可以“跳過”某些語句,因此在該處放置斷點或打印日志可以幫助您更好地了解正在發生的情況。

旁注:

  1. 由於參數的數量是固定的,因此在這種情況下,使用params似乎是多余的(通常在應傳遞未知的#arguments時使用)。
  2. 使用bool類型而不是int作為標志

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM