(type)objectname.var中的(type)是什么

时间:2010-07-02 13:59:05

标签: c# casting

我正在阅读一本关于C#的书,并且遇到了一些我似乎无法查看的东西,因为我不知道它叫什么,或者试图通过描述来搜索某些内容。

有些人可以向我解释在(type)中引用对象之前发生的事情或(int)objectname.variablename背后的含义吗?

好像向我投掷。

编辑: 由于大多数人在我只猜测时需要关注“我的”引用,并且需要更多代码,因此我将包含我正在审核的代码引入了这个问题。我在(int)numericupDown1.Value;

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

5 个答案:

答案 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的一个剩余概念,有时编译器不知道什么类型的东西。演员是向编译器发出的如何解释变量的消息。