我有 3 个类 KlasseA、KlasseB 和 KlasseC 的类层次结构。ClassC继承自ClassB。B类继承自A类。
这些类中的每一个都有各自的 int 类型属性 A、B 和 C 以及字段 a、b 和 c:
public class KlasseA
{
private int a;
public int A { get => a; set => a = value; }
}
public class KlasseB: KlasseA
{
private int b;
public int B { get => b; set => b = value; }
}
public class KlasseC: KlasseB
{
private int c;
public int C { get => c; set => c = value; }
}
(我省略了不必要的构造函数和检查逻辑)
现在我可以编写以下代码:
class Program
{
static void Main(string[] args)
{
KlasseA aKlasse;
KlasseB bKlasse;
KlasseC cKlasse;
aKlasse = new KlasseC() { A = 4, B = 5, C = 6 };
bKlasse = aKlasse as KlasseB;
cKlasse = aKlasse as KlasseC;
}
}
当我将aKlasse,bKlasse和添加cKlasse到监视窗口时,所有 3 个都显示 type 的值KlasseC,但类型分别显示为"KlasseA (KlasseC)"和"KlasseB (KlasseC)"和"KlasseC"。
展开所有 3 个监视变量后,我可以看到所有 3 个变量中的所有 3 个字段和属性:
-aKlasse {KlasseC} KlasseA {KlasseC}
A 4 int
B 5 int
C 6 int
a 4 int
b 5 int
c 6 int
-bKlasse {KlasseC} KlasseB {KlasseC}
A 4 int
B 5 int
C 6 int
a 4 int
b 5 int
c 6 int
-cKlasse {KlasseC} KlasseC
A 4 int
B 5 int
C 6 int
a 4 int
b 5 int
c 6 int
我认为这是不正确的,因为在代码中我永远无法编写
aKlasse.C = aKlasse.A;
即使监视窗口指示 aKlasse 具有属性 AB 和 C。
有人可以证实或反驳我的假设吗?
慕标琳琳
相关分类