繁体   English   中英

我如何传递变量名称,而不是它的值。 然后在传递后使用它的值?

[英]How can I pass a variables name, not its value. Then use its value after it has been passed?

我想将这些字符串传递到循环中,我希望将变量列表 splitSearchString[i] 作为变量本身而不是它的值传递。 一旦在循环中,我想使用它的值。 这是可能的还是我以错误的方式解决这个问题? 感谢您帮助新手。 这是代码:

    string[] splitSearchString = SearchText.Split(' ');
        int i = 0;
        switch (SearchBy)
        {
            case 1:
                SearchByString = "cert_code LIKE '%" + splitSearchString[i] + "%'";
                break;
            case 2:
                SearchByString = "upc LIKE '%" + splitSearchString[i] + "%'";
                break;
            case 3:
                SearchByString = "description LIKE '%" + splitSearchString[i] + "%'";
                break;
            case 4:
                SearchByString = "(cert_code LIKE '%" + splitSearchString[i] + "%' OR upc LIKE '%" + splitSearchString[i] + "%')";
                break;
            case 5:
                SearchByString = "(cert_code LIKE '%" + splitSearchString[i] + "%' OR description LIKE '%" + splitSearchString[i] + "%')";
                break;
            case 6:
                SearchByString = "(upc LIKE '%" + splitSearchString[i] + "%' OR description LIKE '%" + splitSearchString[i] + "%')";
                break;
            default:
                SearchByString = "(upc LIKE '%" + splitSearchString[i] + "%' OR description LIKE '%" + splitSearchString[i] + "%' OR cert_code LIKE '%" + splitSearchString[i] + "%')";
                break;
        }
        SqlConnection sqlConn = new SqlConnection(connectionString);
        sqlConn.Open();
        SqlCommand sqlCmd;
            if (searchString.Contains(' ') == true && SearchExact == false)
            {
                formatedSplitSearchString = "SELECT CASE WHEN t1.longdesc IS NULL OR t1.longdesc = '' THEN t1.desc WHEN t1.longdesc IS NOT NULL AND t1.longdesc <> '' THEN t1.longdesc END AS 'description', t1.upcode FROM Product t1 LEFT JOIN Vendor t2 ON t1.vendor = t2.vendor_no LEFT JOIN Department t3 ON t1.department = t3.dept_no LEFT JOIN Section t4 on t1.section = t4.section WHERE " + SearchByString + VendorFilterStr + DeptFilterStr + SectionFilterStr;
                for (i = 0; i < splitSearchString.Length; i++)
                {
                    if (i > 0)
                    {
                        formatedSplitSearchString += " AND " + SearchByString;
                    }
                }
                formatedSplitSearchString += VendorFilterStr + DeptFilterStr + SectionFilterStr + ";";
                sqlCmd = new SqlCommand(formatedSplitSearchString, sqlConn);
            }
            else
            {
                sqlCmd = new SqlCommand(
                "SELECT CASE WHEN t1.longdesc IS NULL OR t1.longdesc = '' THEN t1.description WHEN t1.longdesc IS NOT NULL AND t1.longdesc <> '' THEN t1.longdesc END AS 'description', t1.upcode FROM Product t1 LEFT JOIN Vendor t2 ON t1.vendor = t2.vendor_no LEFT JOIN Sections t4 on t1.section = t4.section LEFT JOIN Departments t3 ON t1.department = t3.dept_no WHERE " + SearchByString + VendorFilterStr + DeptFilterStr + SectionFilterStr + ";", sqlConn);
            }
        }
        SqlDataReader sqlDr = sqlCmd.ExecuteReader();
        while (sqlDr.Read())
        {
            lvi = new ListViewItem((sqlDr["description"].ToString()));
            lvi.SubItems.Add(sqlDr["upc"].ToString());
            lviList.Add(lvi);
        }
        return lviList;

所以,你想要做的是通过引用传递变量,这样你就传递了变量的实际内存地址。

更好的选择是创建一个返回数组的函数,并调用该函数来设置数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM