SORU
6 AĞUSTOS 2008, ÇARŞAMBA


Neden't İ C soyut statik yöntemler var#mı?

providers ile adil bir aralar çalışıyorum, soyut ve statik bir yöntem olduğunu soyut bir sınıf var burada istediğim ilginç bir durumla karşılaştım. Konuyla ilgili bir kaç mesaj okudum, ve bir bakıma mantıklı, ama orada güzel net bir açıklaması var mı?

CEVAP
6 AĞUSTOS 2008, ÇARŞAMBA


Statik bir yöntem değildirörneğigibi, sadece bir nesne başvurusu olmadan kullanılabilir.

Bir ara bir statik yöntemi ile yapılan sınıf adı değil, bir obje referans ve IL kodu arayacak arama soyut yöntemle Adı Sınıf tanımlı değil sınıfın adını kullandın.

Bana bir örnek göstereyim.

Aşağıdaki kodu:

public class A
{
public static void Test()
{
}
}

public class B : A
{
}

Eğer B. Test çağrısı şöyle:

class Program
{
static void Main(string[] args)
{
B.Test();
}
}

Daha sonra Main metodu içerisinde gerçek kod şu şekildedir:

.entrypoint
.maxstack 8
L0000: nop
L0001: call void ConsoleApplication1.A::Test()
L0006: nop
L0007: ret

Gördüğünüz gibi, çağrı kodu bu şekilde yazmak bile B'ye tanımlanan Bir sınıf, testti, çünkü A. Test etmek için yapılır.

Eğer olsaydısınıf türlerimesela Delphi, nereye sen-ebilmek yapmak bir değişken yönlendiren bir tür değil, bir nesne olurdu daha fazla kullanmak için sanal ve böylece soyut statik yöntemleri ve kurucular), ama değiller kullanılabilir ve böylece statik aramaları sanal olmayan .NET.

Ben de fark ettim IL tasarımcılar izin verebilir kod derlenecek için çağrı B. Test etmek ve gidermek, çağrı zamanı, ama yine de olmaz sanal olarak hala yerinde olurdu yazmak bir çeşit sınıf adı.

Sanal bir yöntem, ve böylece soyut olanlar, sadece yararlı olduğunda kullanarak bir değişken olarak, çalışma zamanında, içerebilir birçok farklı türde nesneler, ve bu saate kadar doğru yöntemi için geçerli bir nesne var değişken. Statik yöntemler bir sınıf adı yine de gitmelisin, çağrı için tam bir yöntem olabilir. çünkü derleme zamanında bilinen ve değişmeyecek.

Böylece, sanal/soyut statik yöntemler mevcut değildir .NET.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • fouseyTUBE

    fouseyTUBE

    21 Mart 2011
  • sinumatic

    sinumatic

    19 Aralık 2006
  • WhtButterflyLiz

    WhtButterfly

    14 NİSAN 2008