SORU
2 NİSAN 2009, PERŞEMBE


&Quot için iki sınıf sağlayan bir program;kavga" yazdım. Sebebi ne olursa olsun C# her zaman kazanır. Ne'ler VB.NET?

İki sınıf için izin veren bir program yazdım "" Kendine iyi bak. Sebebi ne olursa olsun C# her zaman kazanır. VB.NET nesi var ?

   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");
    }

İşte oyuncular: C oyuncu A#:

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

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

İçinde VB.NET: oyuncu 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

Ve burada bir temel sınıf.

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

    public abstract int GetPower { get; }

    protected Player()
    {
        Power = GetPower;
    }
}

CEVAP
2 NİSAN 2009, PERŞEMBE


Burada sorun, VB alan değerini ayarlamadan önce temel kurucu arıyor. Temel Oyuncu sınıfı sıfır depolar.

.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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • SoundHound

    SoundHound

    8 Mart 2006
  • TimMinchinLive

    TimMinchinLi

    23 ŞUBAT 2009
  • WhtButterflyLiz

    WhtButterfly

    14 NİSAN 2008