例如:
String login = String.Format("computer={0}&ver={1}.{2}.{3}&from={4}&realcomputername={5}&type={6}&Channels={7}&Hotkeys={8}&ID={9}\r\n",
serviceConfig.Computer,
serviceConfig.Version.Major,
serviceConfig.Version.Minor,
serviceConfig.Version.Build,
userName,
Environment.MachineName,
type,
serviceConfig.ChannelsString,
serviceConfig.HotKeysString,
serviceConfig.AlarmGroupName);
这不会产生非常易读的代码,并且随着越来越多的参数被添加,它看起来更加丑陋,并且更容易找到哪个参数在哪个插槽中。
我知道这是一个noob问题,我想我只是要求如何格式化文本以使其更具可读性,但如果有更好的方法可以做到这一点,我也想知道。
答案 0 :(得分:7)
你可以查看StringBuilder class并将字符串的汇编分成几行。
AppendFormat method(感谢Joel)就是你想要的。
答案 1 :(得分:1)
String login = String.Format(
"computer={0}"+
"&ver={1}.{2}.{3}"+
"&from={4}"+
"&realcomputername={5}"+
"&type={6}"+
"&Channels={7}"+
"&Hotkeys={8}"+
"&ID={9}\r\n",
serviceConfig.Computer,
serviceConfig.Version.Major,
serviceConfig.Version.Minor,
serviceConfig.Version.Build,
userName,
Environment.MachineName,
type,
serviceConfig.ChannelsString,
serviceConfig.HotKeysString,
serviceConfig.AlarmGroupName);
答案 2 :(得分:0)
假设您可以使用LINQ,您可以将参数推送到Dictionary<string, string>
,然后将参数连接在一起:
Dictionary<string, string> args = new Dictionary<string, string>
{
{"computer", serviceConfig.Computer},
{"ver", string.Format("{0}.{1}.{2}",
serviceConfig.Version.Major,
serviceConfig.Version.Minor,
serviceConfig.Version.Build)},
{"from", userName},
{"realcomputername", Environment.MachineName},
{"type", type},
{"Channels", serviceConfig.ChannelsString},
{"Hotkeys", serviceConfig.HotKeysString},
{"ID", serviceConfig.AlarmGroupName},
};
string login = string.Join("&", args.Select(arg =>
string.Format("{0}={1}", arg.Key, arg.Value)).ToArray());
这将比一个简单的string.Format更慢,更耗尽内存,但看起来你要发出一个HTTP请求,所以我几乎可以保证它不会成为瓶颈。
最后一行也可以拉出一个扩展方法,你可以在任何时候想要构建这样的查询字符串。
另外,请务必注意,由于Dictionary不保留插入顺序,因此无法保证查询字符串中的参数将按照确切的顺序排列。这应该没关系,但是如果确实如此,你可以用List<KeyValuePair<string, string>>
替换字典(OrderedDictionary也应该有效)。