簡體   English   中英

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 params。 問題是我只想添加變量不為null或為空的參數。

我可以做這樣的事情:

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

但是,這將變得復雜和丑陋,試圖處理空變量的所有不同排列。

如果沒有null,有人可以建議一個簡單的方法來添加參數嗎? 也許我可以轉換為params []字符串的列表?

    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]));
    }
}

只需創建一個字典,其中鍵是param,值很好......值。

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}"));

僅當字典不為空時才將值添加到字典中。

暫無
暫無

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

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