SORU
18 EYLÜL 2008, PERŞEMBE


VB.NET verim

C# anahtar yield çağırdı. VB.NET bu anahtar kelime yoktur. Visual Basic programcıları bu anahtar kelime eksikliği bakayım? Yineleyici sınıf onlar kendi uygulamak mı? Ya da denemek ve bir yineleyici ihtiyacını önlemek için bir kod?

yield anahtar sözcüğü derleyici perde arkasında bazı kodlama yapmak için zorlayan yok.The implementation of iterators in C# and its consequences (part 1)bunun iyi bir örneği vardır.

CEVAP
19 Aralık 2008, Cuma


Not: Bu cevap yaşlı şimdi. Yineleyici bloğu beri VB.NET eklendi

C# derleme zamanında çevirir devlet makinesine verim anahtar kelime. VB.NET verim anahtar yok, ama C kolay bulunmayan bir işlev içinde devlet güvenli bir şekilde gömülmesi için kendi mekanizması var#.

C# static anahtar normalde Visual Basic Shared anahtar kelime kullanarak tercüme edilir, ama bazı şeyler kafa karıştırıcı iki basamağı vardır. Bir tek C# statik sınıf gerçekten Visual Basic Modülünde değil, Paylaşılan bir sınıf (ya da Visual Basic yol, ama hayır kod izin vermeleri gerekirdi). Diğer VB.NET Static kendi anahtar kelime var. Ancak, Static VB.NET farklı bir anlamı vardır.

VB.NET Static anahtar sözcüğü bir işlev içinde bir değişkeni bildirmek için kullandığınız, ve değişken yaptığınızda işlev çağrıları yapısını hala koruyor. Bu farklı daha sadece ilan bir özel statik sınıf üyesi C# çünkü bir statik fonksiyonu üyesi VB.NET garantili de evresel, derleyici çevirir bunu kullanmak için Monitor sınıfı derleme zamanında.

Tüm bunları neden buraya yazıyorsun, değil mi? Peki, yeniden kullanılabilir genel Iterator<T> bir sınıf (veya VB.NET Iterator(Of T)) inşa etmek mümkün olmalıdır. Bu sınıfta durum makinesi C tarafından kullanılan alet olur#, Yield() C karşılık gelen Break() yöntemleri ile# anahtar kelimeler. O zaman sen-ebil kullanma bir örnek statik (VB.NET gerçek anlamda bir çalışması olabilir sonuçta bunu hemen hemen aynı işi olarak C#'s yield yaklaşık aynı miktarda kod (atarak sınıfı ağ kendisi beri olur sonsuz yeniden kullanılabilir).

Verim kendim girişim için yeterli, ama umurumda değilgerekirmümkün. O da önemsiz uzak, C olarak söyledi,# ekip üyesi Eric Lippert bu"*.* 14" der Ben de inanıyorum beri yazdığım ilk taslak bu bir yıl önce değil gerçekten olası bir anlamlı şekilde kadar Visual Studio 2010 çıktığı gibi olur iste gönderme birden fazla Lambda Yineleyici sınıf ve bu kadar çok pratik zorundayız.NET 43'nın desteği için çok satırlı Lambda.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fullscreen

    Fullscreen

    23 Mart 2006
  • Glove and Boots

    Glove and Bo

    1 ŞUBAT 2007
  • Tylerron

    Tylerron

    6 AĞUSTOS 2006