C# 为可变数量的参数构建参数列表的简单方法

本文关键字:参数 构建 简单 方法 列表 | 更新日期: 2023-09-27 18:18:10

我有一个接受这个参数的方法

params string[] additionalParameters 

我像这样构建它:

qsParams = new string[] {"k=" + k, "l=" + l, "o=" + o, "s=" + s, "t=" + t, "h=" + h, "exp=" + exp };

这些是网址参数。问题是我只想添加变量不为空或空的参数。

我可以做这种事情:

if (string.IsNullOrEmpty(k))
{
    qsParams = new string[] {"l=" + l, "o=" + o, "s=" + s, "t=" + t, "h=" + h, "exp=" + exp };
}

但是,试图处理空变量的所有不同排列会变得复杂和丑陋。

如果没有空,任何人都可以建议一种添加参数的简单方法吗? 也许我可以转换为参数 [] 字符串的列表?

C# 为可变数量的参数构建参数列表的简单方法

    public static void Main(string[] args)
    {
        List<string> parameters = new List<string>();
        string k = "a";
        string l = null;
        AddParam("k", k, parameters);
        AddParam("l", l, parameters);

        string[] result = parameters.ToArray();
    }
    public static void AddParam(string paramName, string paramValue, List<string> parameters)
    {
        if (string.IsNullOrEmpty(paramValue))
            return;
        parameters.Add(paramName + "=" + paramValue);
    }

你可以试试这样的事情。

您可以编写一个方法,如果变量没有值,则返回null

private string GetListValue(string prefix, string value) {
    if (String.IsNullOrEmpty(value)) {
        return null;
    }
    else {
        return prefix + value;
    }
}

您可以使用此方法定义原始列表(仅使用 2 个值(:

string[] rawList = { GetListValue("k=", k), GetListValue("l=", l) };

然后使用 LINQ 清理列表:

string[] cleanValues = rawValues.Where(v => v != null).ToArray();

如果你的参数总是按正确的顺序排列:

List<string> qsParams = new List<string>();
string[] paramNames = new string[] { "k", "l", "o", "s", "t", "h", "exp" };
for (int i = 0; i < additionalParameters.Length; i++)
{
    if (!string.IsNullOrEmpty(additionalParameters[i]))
    {
        qsParams.Add(string.Format("{0}={1}", paramNames[i], additionalParameters[i]));
    }
}

只需创建一个字典,键是参数,值很好......值。

Dictionary<string, string> Parameters = new Dictionary<string, string>();
Parameters.Add("k", "myKValue");
Parameters.Add("o", "myOValue");
string paramaterList = string.Join("&", Parameters.Select(x => $"{x.Key}={x.Value}"));

仅当值不为 null 时,才将其添加到字典中。