Genel sınıflar kütüphanesi - hatalar, açıklamalar, sorular, kullanım özellikleri ve öneriler - sayfa 21
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Sonuçta, istenen tür için GetHashCode'u aşırı yüklemeye ve IEqualityComparable'ı çitlemeye başlamamaya başlar.
Bu durumda, uçlar çok ileri gider ve kütüphanenin bağırsaklarında bir yerde olası bir hata meydana gelir. Ve orada bir işlevin neden bulunamadığını ve kimin hatası olduğunu tahmin edin. Ve arayüzler, gerekli tüm fonksiyonların önceden nesnede tanımlanmış olmasını sağlar.
Bu durumda, uçlar çok ileri gider ve kütüphanenin bağırsaklarında bir yerde olası bir hata oluşur. Ve orada bir işlevin neden bulunamadığını ve kimin hatası olduğunu tahmin edin. Ve arayüzler, gerekli tüm fonksiyonların önceden nesnede tanımlanmış olmasını sağlar.
MqlTick için bir örnek gösterebilir misiniz?
Ve arayüzler, gerekli tüm fonksiyonların önceden nesnede tanımlanmış olmasını sağlar.
evet, yalnızca bu sınıflar evrensel olduğunu iddia eder ve kutudan çıktığı gibi her tür için çalışmalıdır.
MqlTick için bir örnek gösterebilir misiniz?
Burada, elbette, sınıfa yerleştirilmesi gereken genel giderler ve ayrıca işaretçinin kontrolü var.
Teşekkürler, ancak bu yaklaşımın pratikte avantajının ne olduğunu anlamıyorum?
SB'de böyle bir kod
Önerilen dansların yalnızca bu GetHashCode'u aşırı yüklememek için olduğu ortaya çıktı. Ama bu durumda oyun muma değer mi?
Teşekkürler, ancak bu yaklaşımın pratikte avantajının ne olduğunu anlamıyorum?
SB'de böyle bir kod
Önerilen dansların yalnızca bu GetHashCode'u aşırı yüklememek için olduğu ortaya çıktı. Ama bu durumda oyun muma değer mi?
Hız kritikse, aşırı yüklemek muhtemelen daha iyidir.
Sonuç olarak, bu kitaplığın taşındığı .NET'te, tüm yerleşik türlerin başlangıçta zaten arabirimleri vardır. İnt, yani Int32 şu şekilde tanımlanır:
Bu nedenle, orada aşırı yüklenme yoktur.
Ve CKeyValuePair sınıfının kendisi biraz farklı olarak bildirilmiş olurdu.
Eh, burada MQL'nin sınırlı yeteneklerinin izin verdiği ölçüde tüm bunları uygulamaya çalışıyorlar. Her ne kadar bu zamanı dilin işlevselliğini geliştirmeye harcamak daha iyi olsa da. O zaman tüm .Net kütüphanesini kopyala-yapıştır yapmak yeterli olacaktı ve her şey işe yarayacaktı.
Burada, elbette, sınıfa yerleştirilmesi gereken genel giderler ve ayrıca işaretçinin kontrolü var.
ve bu kodu GetHashCode aşırı yüklemesine zorlamanın sorunu nedir? o zaman arayüzden miras almak gerekli değildir
Tabii ki mümkün. Ancak bu, süreci kontrol etmeyi zorlaştırıyor. Diyelim ki, kod boyunca dağılmış bir sürü farklı GetHashCode'unuz var ve hangisinin burada çağrıldığını (ve nerede olduğunu) anlamak zor olabilir. Örneğin, bir işlev çağrıldığında, argüman başka bir türe dönüştürülür. C#'da, görünüşe göre, bu nedenle, şablonların olanakları C++ ile karşılaştırıldığında kısıtlanmıştır.
Tabii ki mümkün. Ancak bu, süreci kontrol etmeyi zorlaştırıyor.
iyi. C++'da bu arayüze gerek yoktur, normal etkileşim sadece < operatörünün aşırı yüklenmesiyle sağlanır ve bu operatör SINIF DIŞINDA tanımlanabilir.
bence bu tür yapıları geri çevirmekten çok daha basit ve özlü. ancak sınıfın dışında < operatörünü aşırı yüklemek için yerel desteğe ihtiyacımız var.
ve yerleşik yapılar için GetHashCode aşırı yüklenmesinden başka bir şey kalmaz, çünkü saplama korkunç ve miras almanın bir yolu yok. bir yapıdan miras almak bir koltuk değneği çözümüdür, çünkü standart işlevleri kullanırken, her şeyin istendiği gibi sürmesi için yapıyı özel bir varise manuel olarak atmaya zorlar.bir yapıdan miras almak bir koltuk değneği çözümüdür, çünkü standart işlevleri kullanırken, her şeyin istendiği gibi sürmesi için yapıyı özel bir varise manuel olarak atmaya zorlar.
Görünüşe göre kalıtım değil, bir sınıftan bir yapı üzerindeki bir sarmalayıcı mı demek istiyorsun?
Aslında, böyle bir "zorlama" aynı zamanda MQL işlevselliğinin bir dezavantajıdır, çünkü Cast operatörünü aşırı yükleme olasılığı yoktur. Aksi takdirde, sınıf örtük olarak yapıya kolayca aktarılır.
Genel olarak, dilin rafine edilmesi ve rafine edilmesi gerekir. Ama nedense kimse kaşınmıyor... 2 yıldır gelişimde bir durgunluk, hiçbir iyileştirme ve yenilik yok.
Buradaki geliştiricilerin kendilerinin çoklu arayüz ve diğer özelliklerin eksikliğinden şikayet etmelerine rağmen, kaktüs yemeye devam ediyorlar)