gpt4 book ai didi

c# - 我写了一个程序,允许两个类到 "fight"。无论出于何种原因,C# 总是获胜。 VB.NET 有什么问题?

转载 作者:IT王子 更新时间:2023-10-29 03:44:32 25 4
gpt4 key购买 nike

我写了一个程序,让两个类(class)“打架”。无论出于何种原因,C# 总是获胜。 VB.NET 有什么问题?

   static void Main(string[] args)
{
Player a = new A();
Player b = new B();

if (a.Power > b.Power)
Console.WriteLine("C# won");
else if (a.Power < b.Power)
Console.WriteLine("VB won");
else
Console.WriteLine("Tie");
}

以下是球员:C# 中的玩家 A:

public class A : Player
{
private int desiredPower = 100;

public override int GetPower
{
get { return desiredPower; }
}
}

VB.NET 中的玩家 B:

Public Class B
Inherits Player

Dim desiredPower As Integer = 100

Public Overrides ReadOnly Property GetPower() As Integer
Get
Return desiredPower
End Get
End Property
End Class

这是一个基类。

public abstract class Player
{
public int Power { get; private set; }

public abstract int GetPower { get; }

protected Player()
{
Power = GetPower;
}
}

最佳答案

这里的问题是 VB 在设置其字段值之前调用基本构造函数。所以基本 Player 类存储零。

.method public specialname rtspecialname 
instance void .ctor() cil managed
{
// Code size 15 (0xf)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [base]Player::.ctor()
IL_0006: ldarg.0
IL_0007: ldc.i4.s 100
IL_0009: stfld int32 B::desiredPower
IL_000e: ret
} // end of method B::.ctor

关于c# - 我写了一个程序,允许两个类到 "fight"。无论出于何种原因,C# 总是获胜。 VB.NET 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/711586/

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