Использование конкатенированных дословных строк в качестве ключей в C # NameValueCollection

#c# #string

#c# #строка

Вопрос:

Я пытался использовать дословные строки для создания строки, которую я буду использовать в качестве ключа для ссылки на значение в NameValueCollection.

Строка, которую я хочу, это \storagelocal , поэтому я создаю дословную строку

 string key = @"\storagelocal";
 

Позже я использую его как ключ в коллекции NameValue, подобной этой

 string value = Settings[key];
 

Когда я отлаживаю приведенный выше код и смотрю на ключ, он отображается \\storage\local в формате escape-последовательности. Поскольку это не тот ключ, который указан в моих настройках, я не получаю значение.
Пожалуйста, помогите мне понять, как я могу использовать в \storagelocal качестве ключа в своей коллекции.

Комментарии:

1. Я не уверен, что понимаю проблему, печатное представление в отладчике не совпадает с фактической строкой — оно должно отображать escape-последовательности. Это нормальное и ожидаемое поведение.

2. Это отладчик, который показывает ваши значения такими \\storage\local , какими они есть \storagelocal на самом деле, поэтому проблема в другом месте

Ответ №1:

\\ — это просто представление отладчика (с экранированными обратными косыми чертами). Это ожидаемое поведение. Вы можете проверить его работу, используя следующий пример:

 string value = "Some value";
Settings[@"\storagelocal"] = value;
string value1 = Settings[@"\storagelocal"];
string value2 = Settings["\\storage\local"];
 

Оба значения1 и значение2 будут иметь одинаковый результат, который является «Некоторым значением»