Значение String.Format в C# в следующем контексте?

Я просто просматривал определенный код... Я хотел знать, что означает следующий код

string format = "//User[UserName=\"{0}\" and EncryptPassword=\"{1}\"]";
string xpath = String.Format( format, userName, password );    

Позже xpath используется для создания объекта xPathNodeIterator. Я не совсем понимаю, как используется String.Format и через какой узел будет проходить XPathNodeIterator, если я выполню итерацию?

4 ответа

Решение

Прочитайте детали String.Format. Это

Заменяет каждый элемент формата в указанной строке текстовым эквивалентом значения соответствующего объекта.

это означает, что xpath будет содержать строку формата, где {0} в строке формата будет заменено значением имени пользователя, а {1} будет заменено значением пароля

При условии, что

string userName = "Ehsan";
string password = "Password";
string format = "//User[UserName=\"{0}\" and EncryptPassword=\"{1}\"]";
string xpath = String.Format(format, userName, password);  

Xpath будет эквивалентен

//User[UserName="Ehsan" and EncryptPassword="Password"]

Это примерно эквивалентно коду

string xpath = "//User[UserName=\"" + userName.ToString() + "\" and EncryptPassword=\"" + password.ToString() + "\"]";

String.Format просто позволяет легко заменять заполнители в тестовых строках и дополнительно добавлять дополнительное форматирование.

Предполагать:

userName = "Peter"
password = "abc123"

Ваш xpath будет:

String.Format(format, userName, password)
String.Format("//User[UserName=\"{0}\" and EncryptPassword=\"{1}\"]", "Peter", "abc123")

Поскольку {0} заменяется на userName, "Peter", а {1} заменяется на passowrd, "abc123", ваш xpath становится:

//User[UserName="Peter" and EncryptedPassword="abc123"]

Следует помнить, что все эти {0}, {1} и т. Д. Будут заменены на следующие строки.

Это просто означает "использовать userName а также password за {0} а также {1} соответственно в строке "//User[UserName=\"{0}\" and EncryptPassword=\"{1}\"]";

Это даст вам полученную строку:

"//User[UserName=\"John\" and EncryptPassword=\"correctHorseBatteryStaple\"]"

(при условии, что значение userName было John и... ну, вы можете угадать пароль).

Другие вопросы по тегам