我目前正试图让我的头脑围绕铸造和拳击。据我所知:
我正在努力尝试解决这个问题的例子。 假设我有2个类,一个类中的方法调用另一个类的构造函数。
//1st class
public class FirstClass
{
//code for fields,constructor & other methods
public void CallOtherClass(int firstClassID)
{
int x = firstClassID;
SecondClass test = new SecondClass(x);
}
}
//2nd class
public class SecondClass
{
public SecondClass(FirstClass firstClass)
{
//set some fields
}
}
好的,所以在上面的场景中我们会遇到一个问题,因为CallOtherClass方法试图设置SecondClass的构造函数,但是SecondClass的构造函数接受FirstClass类型的参数,我们可以提供的只是一个int。
据我所知,这是使用类型转换的好时机?像下面的东西。
//1st class
public class FirstClass
{
//code for fields,constructor & other methods
public void CallOtherClass(int firstClassID)
{
int x = firstClassID;
FirstClass a;
a = (FirstClass)x;
SecondClass test = new SecondClass(a);
}
}
//2nd class
public class SecondClass
{
public SecondClass(FirstClass firstClass)
{
//set some fields
}
}
在我看来,我觉得将x的类型更改为FirstClass的引用类型。显然,我的理解是偏离某些行,因为它会产生错误
"Cannot convert type 'int' to 'Namespace.FirstClass"
有什么想法吗?
答案 0 :(得分:2)
类型转换不是装箱或拆箱,但它可能会导致。
由于int
不是FirstClass
,即 int 不会继承或扩展FirstClass
,因此您无法将其转换为FirstClass
输入int
。
类型转换会导致转换,只有在可能的情况下才会这样做。
所以你可以从int到double,反之亦然,可能有副作用。但是你无法从FirstClass
转到{{1}}。
装箱,在包装器对象中包装值或引用类型。至少我就是这么想的。不确定内部是如何工作的,但我的猜测是赋值运算符“=”或者在取消装箱时隐式返回包装的值,以及装箱时的包装器对象。