Что такое (тип) в (типе)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, когда компилятор иногда не знал, что это за тип. Приведение было сообщением компилятору, как интерпретировать переменную.