2015-03-18 3 views
0

Итак, я изучаю C#. Просматривайте видеоролики MSDN Tabors. Я немного смущен тем, почему этот результат является тем, чем он является. Я не понимаю, что такое {1} и {0}, и я не понимаю, пытается ли он их вычесть. В моей голове, что должно получиться при использовании readline, будет «(не уверен), 2, автомобиль». UserValue is et at 2, поэтому сообщение не равно 1, что делает его равным автомобилю. Он просто щелкнул, когда я печатаю это. {1} ссылается на сообщение, вторая переменная в выражении, а {0} ссылается на userValue, первую переменную. Поэтому результатом является «автомобиль - 2». Я почти уверен, что только что понял, но кто-то может подтвердить. Спасибо.Что такое запись {index} в строках C#?

int userValue = 2; 
string message = (userValue == 1) ? "boat" : "car"; 
Console.WriteLine("{1} - {0}", userValue, message); 
Console.ReadLine(); 
+3

'{1}' и '{0} 'являются тянущаяся параметры, которые следуют за строкой. '{0}' - это первый параметр, а '{1}' второй, поскольку он основан на нуле. Также нет, он не вычитает их. Знак '-' является только оператором, если используется вне строки. –

+0

Lol .. Да, это правильно .. – Minh

+0

тезисы - это просто * дыры * в вашей строке форматирования 'WriteLine' используется для вставки значений, которые нужно передать после:' '' - это просто символ '' -'' внутри строка – Carsten

ответ

3

Причина их использования {0} и т.д. для индекса или заполнитель, это полезно, поскольку без этого кода, вы бы в конечном итоге со следующим:

Console.WriteLine(userValue + " " + message); 

Так, в описанном выше подходе вы использовали конкатенацию. Это объединит ваши два значения вместе, в случае String считается неизменным, что означает каждый раз, когда вы объединяете свою препятствующую память. Так что если вы делаете:

string message = String.Empty; 
message += userValue; 
message += note; 

+=, что это событие, которое добавляет наше текущее значение плюс новое значение. Следует отметить, однако, что с каждым message = он воссоздает значение в памяти, поэтому большие данные могут стать проблемой.

Встроенная функция: Console.WriteLine наилучшим образом коррелирует с String.Format. Что в сущности позволит нам сделать следующее:

var message = String.Format("{0} {1}", userValue, note); 

Так что, когда вы используете указанный держатель, он строит наш выход как конкатенации, но в более производительный и простой подход для чтения. Так как вы должны начинать с {0}, вам невероятно легко узнать, какое значение вы хотите изменить.

Важно: Чтобы пример легче понять, но index или placeholder сравнение, для понимания, но они параметры, которые будут заселять указанные позиции на основе порядка осуществления.

Пример с кодом:

var userValue = 2; 
var message = String.Empty; 

if(userValue == 1) 
    message = "boat"; 
else { message = "car"; } 

Для простоты я удалил свой тройной, потому что вы жёстко значение пользователя вашего заявление никогда не будет тестировать так, как вы должны это установить на 2. Таким образом, у вас есть два значения, так как вы можете обозначить if userValue == 1 так, иначе назначьте сообщение своей другой переменной.

Когда вы сделаете эту часть:

Console.WriteLine("{0} - {1}", message, userValue); 

Ваше преобразование обоих параметров в string, но он не будет делать каких-либо вычитанием, потому что string не делает математические функции, так что вы бы в конечном итоге с выход:

car - 2; 

Причина в том, что, как я обозначил ранее, оба параметра действуют как заполнители. Таким образом, значение этих двух параметров будет вставлено в ваш String.

Надеюсь, это изложит, что он делает лучше для вас.

1

Этих строки, которые выглядят как "{0}" строковые параметры форматирования, которые заполняются в переменных хвостовом. Число указывает, какую переменную использовать, начиная с 0.

Например:

Console.WriteLine("{1} - {0}", userValue, message); 
//prints "car - 2" 

Это потому, что {0} является userValue, который равен индекс 2. равен 0, так как это первый в списке следующие строки формата , Затем {1} - это message, который вывешенное выражение будет «автомобилем» с userValue == 2.

0

На самом деле, Console.WriteLine может принимать более одного аргумента, каким будет текст. С тех пор вы можете ссылаться на другие переменные внутри текста с {n} внутри него, где n - это позиция аргумента. Итак, когда он говорит Console.WriteLine("{1} - {0}", userValue, message);, он фактически получает «автомобиль - 2» в качестве возвращения.

0

{1} ссылается на сообщение, вторая переменная в выражении, а {0} ссылается на userValue, первую переменную. Поэтому результатом является «автомобиль - 2». Я почти уверен, что только что понял, но кто-то может подтвердить.

string message = (userValue == 1) ? "boat" : "car"; 
Console.WriteLine("{1} - {0}", userValue, message); 

Но если поменять местами конечные параметры, например,

Console.WriteLine("{0} - {1}", userValue, message); 

или места переменных,

Console.WriteLine("{1} - {0}", message, userValue); 

Вы получаете:

2 - автомобиль

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