Что такое (тип) в (типе)objectname.var

Я перебираю книгу по C# и наткнулся на то, что не могу найти, потому что не знаю, как это называется, или пытаюсь найти что-то по описанию.

Могут ли некоторые объяснить мне, что происходит, или смысл (type) который предшествует ссылке на объект, как в (int)objectname.variablename?

Это похоже на кастинг для меня.

РЕДАКТИРОВАТЬ: Поскольку большинство из вас идет от ссылки "Мои" на кастинг, когда я только догадываюсь, и мне нужно больше кода, я включаю код, который я рассматриваю, который поднял этот вопрос. Я ставлю под сомнение (int) в (int)numericupDown1.Value;

private void numericUpDown1_ValueChanged(object sender, EventArgs e) 
{
    dinnerParty.NumberOfPeople = (int)numericUpDown1.Value;
    DisplayDinnerPartyCost();
}

5 ответов

Решение

Это приведение (преобразование) numericUpDown1.Value к значению int. Это также можно сделать с помощью

Convert.toInt32(numericUpDown1.Value)

Я предполагаю, что dinnerParty.NumberOfPeople является целочисленным значением, и поэтому, если вы не произвели приведение, оно выдаст ошибку, если предоставленное значение не будет целым числом. Например, если предоставленное значение было двойным или строковым, оно выдаст ошибку, а при приведении будет преобразовано двойное число, скажем, от 20,5 до 20, и оно будет принято. Для строки это будет зависеть от того, содержит ли строка число в ней. Если строка была "12", то, используя метод преобразования, упомянутый выше, преобразовал бы ее в целое число 12.

Это приведение, он пытается преобразовать имя переменной в тип (тип) во время выполнения

Ты прав. Это кастинг.

Без знания задействованных типов трудно точно сказать, что происходит.

Приведение будет явно вызывать оператор преобразования из одного типа в другой: http://msdn.microsoft.com/en-us/library/ms173105(VS.80).aspx

Однако это может быть распаковка или явная упаковка. Упаковка / распаковка - это дорогой способ хранения типов значений в куче. http://msdn.microsoft.com/en-us/library/yz2be5wk.aspx

Как упоминал Эрик Липперт (один из разработчиков C#) в другом комментарии, это " Преобразование" - преобразование из одного типа в другой.

Это неКастинг. Кастинг - это пережиток C, когда компилятор иногда не знал, что это за тип. Приведение было сообщением компилятору, как интерпретировать переменную.

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