C# 为可变数量的参数构建参数列表的简单方法
C# simple way to build params list for variable number of params
我有一个接受这个参数的方法
params string[] additionalParameters
我是这样构建的:
qsParams = new string[] {"k=" + k, "l=" + l, "o=" + o, "s=" + s, "t=" + t, "h=" + h, "exp=" + exp };
这些是 url 参数。问题是我只想在变量不为 null 或为空的地方添加参数。
我可以做这种事:
if (string.IsNullOrEmpty(k))
{
qsParams = new string[] {"l=" + l, "o=" + o, "s=" + s, "t=" + t, "h=" + h, "exp=" + exp };
}
但是尝试处理空变量的所有不同排列会变得复杂和丑陋。
任何人都可以建议一个简单的方法来添加参数,如果没有 null 吗?也许我可以将列表转换为参数 []string?
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);
}
你可以试试这个。
如果您的参数始终处于正确的顺序:
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]));
}
}
如果你的变量没有值,你可以写一个 returns 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();
只需创建一个字典,键为参数,值为 well... 值。
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}"));
只有当值不为空时才将值添加到字典中。
我有一个接受这个参数的方法
params string[] additionalParameters
我是这样构建的:
qsParams = new string[] {"k=" + k, "l=" + l, "o=" + o, "s=" + s, "t=" + t, "h=" + h, "exp=" + exp };
这些是 url 参数。问题是我只想在变量不为 null 或为空的地方添加参数。
我可以做这种事:
if (string.IsNullOrEmpty(k))
{
qsParams = new string[] {"l=" + l, "o=" + o, "s=" + s, "t=" + t, "h=" + h, "exp=" + exp };
}
但是尝试处理空变量的所有不同排列会变得复杂和丑陋。
任何人都可以建议一个简单的方法来添加参数,如果没有 null 吗?也许我可以将列表转换为参数 []string?
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);
}
你可以试试这个。
如果您的参数始终处于正确的顺序:
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]));
}
}
如果你的变量没有值,你可以写一个 returns 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();
只需创建一个字典,键为参数,值为 well... 值。
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}"));
只有当值不为空时才将值添加到字典中。