Я не уверен, какой из них лучше. Мне нужно проанализировать каждый символ входной строки и получить строку замены для символа. Для некоторых объектов разрешены все буквенно-цифровые символы, поэтому использование переключателя/регистра приведет к большому количеству кода и ухудшит читаемость и удобство сопровождения, но я могу использовать статический метод. Использование HashTable также требует большого количества кода.
Использование статического метода:
private static string EncodeChar(char c)
{
var symbols = string.Empty;
switch (c)
{
case '0':
symbols = "Test";
break;
case '1':
symbols = "Hello";
break;
[...]
}
symbols;
}
Использование хеш-таблицы:
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;
}
Каковы преимущества/недостатки в отношении производительности и распределения памяти?
Dictionary<char, string>
, а неHashTable
— это значительно более эффективно и менее подвержено случайным ошибкам типа. - person Eric Lippert   schedule 14.02.2012