С помощью C # 7 ответ от Майкла Стума может быть улучшен при сохранении читабельности оператора switch:
catch (Exception ex)
{
switch (ex)
{
case FormatException _:
case OverflowException _:
WebId = Guid.Empty;
break;
default:
throw;
}
}
Я предполагаю, что часть проблемы может заключаться в том, что строка Java находится в формате UTF-16, т.е. два байта на символ; поэтому getBytes ()
выполняет кучу работы по преобразованию каждого элемента UTF-16 в один или два байта, в зависимости от вашего текущего набора символов.
Пробовали ли вы использовать CharsetEncoder - это должно дать вам больше контроля над кодировкой String и позволит вам пропустить некоторые накладные расходы в реализации по умолчанию getBytes
.
Или вы пытались явно указать кодировку для getBytes
и использовать US-ASCII в качестве набора символов?
Я вижу несколько вариантов:
Если вы все время конвертируете одни и те же строки, вы можете кэшировать результат в WeakHashMap.
Также взгляните на метод getBytes () (источник доступен, если вы установите SDK), чтобы узнать, что именно он делает.