Я не уверен, какой из них лучше. Мне нужно проанализировать каждый символ входной строки и получить заменяющую строку для символа. Для некоторых объектов разрешены все буквенно-цифровые символы, поэтому использование параметра switch / case приведет к большому количеству кода и уменьшит удобочитаемость и удобство обслуживания, но я могу использовать статический метод. Использование HashTable также требует много кода
Использование статического метода:
private static string EncodeChar(char c)
{
var symbols = string.Empty;
switch (c)
{
case '0':
symbols = "Test";
break;
case '1':
symbols = "Hello";
break;
[...]
}
symbols;
}
Использование HashTable:
private static Hashtable table = CreateTable();
private static Hashtable CreateTable()
{
var table = new HashTable();
table.Add('0',"Test");
table.Add('1', "Hello");
[...]
return table;
}
private static string EncodeChar(char c)
{
return table.ContainsKey(c) ? table[c].ToString() : string.Empty;
}
Метод кодирования:
public void Encode()
{
string output = string.Empty;
for (int i = 1; i < Data.Length; i++)
{
output = string.Concat(output, EncodeChar(Data[i]));
}
EncodedData = output;
}
Каковы преимущества / недостатки производительности и выделения памяти?