如何将这两个函数合二为一
本文关键字:两个 函数 合二为一 | 更新日期: 2023-09-27 18:04:15
first:
public static String ConvertServerToClientAdapter(String adapterServer)
{
string temp = adapterServer.Substring(0, adapterServer.IndexOf("/"));
switch (temp)
{
case "f":
{
return "FA";
}
case "g":
{
return "Gi";
}
case "s":
{
return "SE";
}
case "a":
{
return "ATM";
}
default:
return null;
}
}
第二:public static String ConvertClientToServerAdapter(String adapterClient)
{
switch (adapterClient)
{
case "FA":
{
return "f";
}
case "Gi":
{
return "g";
}
case "SE":
{
return "s";
}
case "ATM":
{
return "a";
}
default:
return null;
}
}
可以将字符串对存储在字典中。这将减少代码中有两个地方表示'a'与'ATM'配对的重复。
对于前向转换,只需索引字典。return _dict[adapterServer];
.
编辑:也许它应该是TryGetValue,如果你想为无效的输入返回null,而不是抛出异常。
对于反向,使用linq:
return _dict.Elements.FirstOrDefault(e => e.Value == adapterClient).Key);
你可以根据更频繁的使用来交换前向/后向索引,前向字典索引比linq更快。
public static String Convert(String input)
{
if (input.Contains("/"))
switch (input.Substring(0, adapterServer.IndexOf("/")))
{
case "f":
return "FA";
case "g":
return "Gi";
case "s":
return "SE";
case "a":
return "ATM";
default:
return null;
}
}
else
switch (adapterClient)
{
case "FA":
return "f";
case "Gi":
return "g";
case "SE":
return "s";
case "ATM":
return "a";
default:
return null;
}
}
你所拥有的是一个地图数据结构,但不幸的是。net没有提供。如果你真的担心经常做这样的事情,你可以谷歌一个现成的地图。您也可以实现自己的:从一个泛型字典开始,覆盖所有方法以确保"值"端是唯一的,并为"反向"查找添加第二个索引器属性——jan de Vaan的解决方案接近于此!
public static String ConvertServerToClientAdapter(String adapterServer)
{
switch (adapterServer.Substring(0, adapterServer.IndexOf("/")))
{
case "f":
{
return "FA";
}
case "g":
{
return "Gi";
}
case "s":
{
return "SE";
}
case "a":
{
return "ATM";
}
default:
{
switch (adapterClient)
{
case "FA":
{
return "f";
}
case "Gi":
{
return "g";
}
case "SE":
{
return "s";
}
case "ATM":
{
return "a";
}
default:
return null;
}
}
}
}