我正在阅读一本关于C#的书,并且遇到了一些我似乎无法查看的东西,因为我不知道它叫什么,或者试图通过描述来搜索某些内容。
有些人可以向我解释在(type)
中引用对象之前发生的事情或(int)objectname.variablename
背后的含义吗?
好像向我投掷。
编辑: 由于大多数人在我只猜测时需要关注“我的”引用,并且需要更多代码,因此我将包含我正在审核的代码引入了这个问题。我在(int)numericupDown1.Value;
中质疑(int)private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
dinnerParty.NumberOfPeople = (int)numericUpDown1.Value;
DisplayDinnerPartyCost();
}
答案 0 :(得分:6)
它正在进行转换,它试图在运行时将variablename转换为type(type)
答案 1 :(得分:4)
它将numericUpDown1.Value转换(转换)为int值。这也可以使用
完成Convert.toInt32(numericUpDown1.Value)
我假设dinnerParty.NumberOfPeople是一个整数值,因此如果你没有强制转换,如果提供的值不是整数,则会抛出错误。例如,如果提供的值是一个double或一个字符串,它会抛出一个错误,通过强制转换它会将双精度转换为20.5到20并且它将被接受。对于字符串,它取决于字符串是否包含数字。如果字符串是“12”,则使用上面提到的convert方法将其转换为整数12。
答案 2 :(得分:2)
答案 3 :(得分:2)
在不知道涉及的类型的情况下,很难确切地说出发生了什么。
Casting将显式地将转换运算符从一种类型调用到另一种类型: http://msdn.microsoft.com/en-us/library/ms173105(VS.80).aspx
然而,它可能是拆箱或明确拳击。 Boxing / Unboxing是一种在堆上存储值类型的昂贵方法。 http://msdn.microsoft.com/en-us/library/yz2be5wk.aspx
答案 4 :(得分:1)
正如Eric Lippert(C#的设计师之一)在其他地方的评论中提到的,这是转换 - 从一种类型转换为另一种类型。 击>
不是施法。 Casting是C的一个剩余概念,有时编译器不知道什么类型的东西。演员是向编译器发出的如何解释变量的消息。