自定义定界符字符串的更好解决方案

时间:2020-05-27 23:22:15

标签: c# .net string delimiter-separated-values

目标是制作一个代表字段的字符串,它们可以用任何字符分隔,但是字段的顺序很重要。

public class TransactionContext
{
    public string BranchId { get; set; }

    public string AccountId { get; set; }

    public int UserId { get; set; }

    public int CheckNum { get; set; }

    public int NumberOfRecords { get; set; }

    public string StartNextId { get; set; }

    public string StartPreviousId { get; set; }

    public string NextId { get; set; }

    public string PreviousId { get; set; }

    public int RecordCount { get; set; }

    public string ToPageContextString(string separator)
    {
        return BranchId + separator +
               AccountId + separator +
               UserId + separator +
               CheckNum + separator+
               NumberOfRecords + separator +
               StartNextId + separator +
               StartPreviousId + separator +
               NextId + separator +
               PreviousId + separator +
               RecordCount + separator;
    }
}

我尝试使用StringBuilder获得更好的解决方案,并且得到了以下内容。

    public string ToPageContextString(string separator)
    {
        var contextBuilder = new StringBuilder()
        return contextBuilder.Append(BranchId + separator)
                             .Append(AccountId + separator)
                             .Append(UserId + separator)
                             .Append(CheckNum + separator)
                             ...
                             .ToString();

    }

我的最后一个建议是使用反射和自定义订单属性,如此处Get properties in order of declaration using reflection所示。

它们是更优雅的解决方案吗?

1 个答案:

答案 0 :(得分:1)

就最短的代码而言,我认为您不会比params overload of string.Join() ...更短...

public string ToPageContextString(string separator)
{
    return string.Join(
        separator,
        BranchId,
        AccountId,
        UserId,
        CheckNum,
        NumberOfRecords,
        StartNextId,
        StartPreviousId,
        NextId,
        PreviousId,
        RecordCount
    );
}
相关问题