gpt4 book ai didi

C#类继承和一个简单的例子

转载 作者:太空狗 更新时间:2023-10-30 01:05:47 24 4
gpt4 key购买 nike

public class A {
public static int a = 12;
public virtual int g() { a--; return h(); }
public virtual int h() { a--; return i(); }
public int i() { return --a; }
}
class B : A {
public int b = 12;
public override int h() { b++; return (a--) + (b++); }
public new int i() { return this.g(); }
static void Main(string[] args) {
Console.WriteLine("A: {0} {1} {2}", new A().g(), new A().h(), new A().i());
Console.WriteLine("B: {0} {1} {2}", new B().g(), new B().h(), new B().i());
Console.ReadLine();
}
}

我发现自己就是一个例子,但我被困住了。我知道它会打印出来:

A: 9 7 6

但我不知道为什么会打印:

B: 18 17 15

A 车道上,g() 取 12 并变成 11,然后将它推到 h() - 然后是 10 , i() 甚至在它到达其他任何地方之前就使它成为 9。所以它是A:肯定是9。然后又是同样的事情,所以是 9 7 和 6。但是在 B 上:它采用现有的 a(现在是 6)并且 g() 使它成为 5。然后 b 递增到 13,然后 5+13=18。之后它将 a = 5 更改为 a = 4b = 14。我明白了。但是为什么下一个又是17呢?不应该是 18 岁吗?

最佳答案

主要区别在于 class A member astatic,这意味着 class 的每个实例A 共享相同的值,而 class B 使用实例变量 b,每个新实例都将其重置为默认值 ( 12 )。

关于C#类继承和一个简单的例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17324136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com