2012-03-08 6 views
-2

E.g. в следующем примере:Что означает {0} в String.Format?

string commandText = string.Format("Select * from {0}", filename); 

Как это работает?

+7

Google "String.Format"? – Joe

+2

Предоставляя вектор атаки SQL Injection. – Andrew

+1

это называется [составное форматирование] (http://msdn.microsoft.com/en-us/library/txafckwd.aspx) (Это из MSDN, удобный сайт для такого рода вопросов!) –

ответ

6

{0} является заполнителем для данного объекта; в этом случае это filename, поэтому он будет вставлять любое имя файла вместо {0}. Точно так же, конечно, вы могли бы использовать {1}, и это было бы заменено вторым переданным параметром и т. Д.

3

{0} относится ко второму параметру, переданному в String.Format. {1} относится к третьему, {2} к четвертому и т.д. Например:

String.Format("The {0} brown {1} jumps {2} the {3} dog.", "quick", "fox", "over", "lazy") 

Оценивает к

"The quick brown fox jumps over the lazy dog." 
1

Это индексатор на аргументы, представленные после “Select * from {0}” и могут быть объединены с спецификаторов формата также. См. Документацию для String.Format Method. Тем не менее, вы должны НИКОГДА НИКОГДА не создавайте команду SQL таким образом, так как он уязвим для атак SQL Injection. Вы всегда должны параметризовать SQL-запросы. См. Статью How To: Protect From SQL Injection in ASP.NET в MSDN.

1

{0} является ссылкой на первый аргумент, переданный после строки формата.

В вашем случае "Select * from {0}" является строкой формата и filename является первым аргументом.

В качестве примера:

String.Format("Select * from {0}{1}{0}","this","database")

вернется:

"Select * from thisdatabasethis"

Смежные вопросы