0

基本クラスがあるとしましょう

class baseClass
{  }

そして、それを継承する別のクラスbaseClass

class foo : baseClass
{  }

直接キャストバックしようとしました(baseClass)fooが、コンパイラーはそれができないと言います。

fooのみを取得する方法はありbaseClassますか?

4

4 に答える 4

5

foo キャストは必要ありbaseClassません。そして、あなたのコードは問題なく動作するはずです:

var foo = new foo();
baseClass x = (baseClass) foo;
于 2013-06-13T12:38:23.510 に答える
2

クラスBからクラスAを派生させる場合、いつでもAをあたかもBであるかのように参照できます。もちろん、これは逆の場合には当てはまりません。一般に、継承されたクラスのチェーンはいつでも参照できます。

于 2013-06-13T12:41:08.400 に答える
1

コンパイラがそのようなことについて不平を言う場合は、複数の名前空間で複数の baseClass が定義されていて、実際には正しい baseClass を参照していないことを意味している可能性があります。

バグを解決するはずの名前空間を確認してください。

于 2013-06-13T12:41:19.087 に答える
0

ここでは、異なる名前空間を使用した実際の例を示します

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;
于 2013-06-13T12:41:29.600 に答える