私は現在、キャスティングとボクシングに頭を悩ませようとしています。私が現在理解しているように:
- ボクシング-値型から参照型(つまり、intからオブジェクト)
- 開箱-参照型から値型(つまり、オブジェクトからint)
- 型キャスト-現時点ではボクシングに似ているように見えますが、参照型をどのタイプのオブジェクトにするかを割り当てることができます。(つまり、customObjectTypeへのint)
例は、私がそれを回避しようと現在取り組んでいる例です。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"
何かご意見は?