基本クラスがあるとしましょう
class baseClass
{ }
そして、それを継承する別のクラスbaseClass
class foo : baseClass
{ }
直接キャストバックしようとしました(baseClass)foo
が、コンパイラーはそれができないと言います。
foo
のみを取得する方法はありbaseClass
ますか?
基本クラスがあるとしましょう
class baseClass
{ }
そして、それを継承する別のクラスbaseClass
class foo : baseClass
{ }
直接キャストバックしようとしました(baseClass)foo
が、コンパイラーはそれができないと言います。
foo
のみを取得する方法はありbaseClass
ますか?
foo
キャストは必要ありbaseClass
ません。そして、あなたのコードは問題なく動作するはずです:
var foo = new foo();
baseClass x = (baseClass) foo;
クラスBからクラスAを派生させる場合、いつでもAをあたかもBであるかのように参照できます。もちろん、これは逆の場合には当てはまりません。一般に、継承されたクラスのチェーンはいつでも参照できます。
コンパイラがそのようなことについて不平を言う場合は、複数の名前空間で複数の baseClass が定義されていて、実際には正しい baseClass を参照していないことを意味している可能性があります。
バグを解決するはずの名前空間を確認してください。
ここでは、異なる名前空間を使用した実際の例を示します
namespace BaseNameSpace
{
public class BaseClass
{
public string Name { get; set; }
}
}
namespace TestNameSpace.Class
{
public class TestClass : BaseClass
{
public string Address { get; set; }
}
}
使用する :
TestClass test1 = new TestClass();
BaseClass b = test1;
正しい使用法があることを確認してください:
using BaseNameSpace;
using TestNameSpace.Class;