C# 对于具有多个参数的长字符串,String.Format最具可读性的用途是什么?
例如:C# 对于具有多个参数的长字符串,String.Format最具可读性的用途是什么?,c#,.net,readability,string.format,C#,.net,Readability,String.format,例如: 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,
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问题,我想我只是想问一下如何将文本的格式设置得更具可读性,但如果有更好的方法,我也想知道 您可以查看并将字符串的组合拆分为几行
(谢谢Joel)就是您在本例中想要的。您可以查看并将字符串的组合拆分为几行
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);
(谢谢Joel)就是您在本例中想要的。假设您可以使用LINQ,您可以将您的参数放入
字典中,然后将参数连接在一起:
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);
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());
Dictionary args=新字典
{
{“computer”,serviceConfig.computer},
{“ver”,string.Format(“{0}.{1}.{2}”,
serviceConfig.Version.Major,
serviceConfig.Version.Minor,
serviceConfig.Version.Build)},
{“发件人”,用户名},
{“realcomputername”,Environment.MachineName},
{“类型”,类型},
{“Channels”,serviceConfig.ChannelsString},
{“热键”,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不保留插入顺序,因此不能保证查询字符串中的参数将按照该顺序。这不重要,但如果有,您可以用列表替换字典(也应该可以)。假设您可以使用LINQ,您可以将参数放入字典中,然后将参数连接在一起:
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());
Dictionary args=新字典
{
{“computer”,serviceConfig.computer},
{“ver”,string.Format(“{0}.{1}.{2}”,
serviceConfig.Version.Major,
serviceConfig.Version.Minor,
serviceConfig.Version.Build)},
{“发件人”,用户名},
{“realcomputername”,Environment.MachineName},
{“类型”,类型},
{“Channels”,serviceConfig.ChannelsString},
{“热键”,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不保留插入顺序,因此不能保证查询字符串中的参数将按照该顺序。这不要紧,但如果是这样的话,您可以用列表替换字典(也应该可以用)。另请参见:另请参见:特别是作为字符串。Format()调用创建StringBuilder并在幕后调用其AppendFormat()方法。特别是作为String.Format()调用调用创建StringBuilder并在幕后调用其AppendFormat()方法。