MQL5 Derleyici, bir sınıf ile ona yönelik bir işaretçi arasında ayrım yapmaz - sayfa 11

 
Ilya Malev :

İşte burada: (* ) burada gerekli değil

* yalnızca =, ==, !=, !, && veya || olduğunda µl'de gereklidir

BURADA, IMHO'ya göre, tam olarak neyle uğraştığınızı (bir nesne veya ona bir işaretçi) unutmamak için bu gereklidir.

İlya Malev :

tekrar çıkarın ve orada değilmiş gibi davranın)))

Yani evet. İşaretçilerle daha fazla geliştirme, tam bir C++ klonuna yol açacaktır.

Muhtemelen, "yönetilen kodda" hiçbir işaretçinin olmadığı ve her şeyin bir nesne olduğu C# yönünde gidecekler, hatta basit türler bile bool int double, vb.

 
Ilya Malev :

Ve yine de, bu arada, operatörle ilgili tüm resmi kanalların (forum, yardım, belgeler) * ölüm sessizliği nedeniyle, belki de yöneticilerin onu tekrar kaldırmayı ve o ve değilmiş gibi davranmayı düşündüğü ortaya çıkabilir. ))) Bu nedenle, şu ana kadar IMHO kullanımına güvenmek genellikle tehlikelidir.

Sessizlik muhtemelen, kullanıcıların %99,9'u için tüm bunların önemli olmamasından kaynaklanmaktadır. Neden mosklarını gereksiz bilgilerle zorluyorsun? Ve bu özelliğe ihtiyacı olanlar istedi ve aldı.

Ne de olsa şimdiye kadar bu özelliği umursamadınız değil mi? Ve şimdi çaresizce neden bilmediğin bahaneler üretmeye başlıyorsun;) Tanıtıldığında ne fark eder: hemen mi yoksa bir ay sonra mı? Onu bilmiyordun, söylemesem de bilemezsin)

 

Hmm... Belki dizi için işaretçiler vardır? Kontrol etmeliyim... Onları çok özledim...

 
Georgiy Merts :

Hmm... Belki dizi için işaretçiler vardır? Kontrol etmeliyim... Onları çok özledim...

Numara. Dizileri sınıflara koymalısın, onların işaretçileri var.

 
Ilya Baranov :

Numara. Dizileri sınıflara koymalısın, onların işaretçileri var.

Evet, ne yazık ki.

Aslında, CArray'in sınıfları-halefleri benim için oldukça uygun. Dizilere işaretçiler istediğim tek şey, dizilere yapılan referansların iletildiği göstergelerdir ve bu referansları tüm nesneler hiyerarşisi boyunca "sürüklemeniz" gerekir, bu çok uygunsuzdur ...

Bir keresinde ya dizilere işaretçiler yapmayı ya da dizilere referanslar değil, Standart Kütüphanenin dizilerine işaretçiler kullanacak bir gösterge işlevi yapmayı önerdim, ama ne yazık ki, "eğer" dedikleri gerekçesiyle reddedildim. işaretçilerin dizilere izin vermesine izin verirseniz, başlatılmamış dizileri kullanmak mümkün olacaktır", ancak geliştiricilerin nesnelerle bu tür endişeleri olmamasına rağmen ... Peki, evet - tamam, bırak vicdanlarında kalsın.

 
Georgiy Merts :

2. MQL, seçmediğini kaldırmamalıdır. Doğru, Dmitry yukarıda söyledi - bir nesne yarattı - onu silin. Aynı C#'daki "çöp toplayıcı" uygulamasından gerçekten hoşlanmıyorum, nesneler benim tarafımdan sağlandığında değil, toplayıcı istediği zaman silindiğinde .

C# toplayıcı canlı bir nesneyi veya işaretçiyi asla silmez. Amacı, cesetlerdeki çöpleri yığından çıkarmak ve bazen onu birleştirmek.

 
Alexey Volchanskiy :

C# toplayıcı canlı bir nesneyi veya işaretçiyi asla silmez. Amacı, cesetlerdeki çöpleri yığından çıkarmak ve bazen onu birleştirmek.

Yani çöp toplayıcının canlı bir nesneyi veya işaretçiyi sileceğini söylemiyorum. İstediği zaman sileceği gerçeğinden bahsediyorum. Ve bu, bence, iyi değil.

Kaldırma ile ve çıkarmadan çalışabilirim. Ve akıllı işaretçiler bile öldürülebilir... Ama yine de nesnelerin silinmesi gerektiğini ve onu yaratanın nesneyi silmesi gerektiğini düşünüyorum.

Ben çok eski kafalı, kemikleşmiş yaşlı bir osurukum.

 
SemenTalonov :

Muhtemelen, "yönetilen kodda" hiçbir işaretçinin olmadığı ve her şeyin bir nesne olduğu C# yönünde gidecekler, hatta basit türler bile bool int double, vb.

Evet, ancak aynı zamanda yönetilmeyen işaretçilerle çalışma yeteneğini bıraktılar. Doğru, böyle bir kodun dağıtımla ilgili kısıtlamaları vardır.

 
Georgiy Merts :

Yani çöp toplayıcının canlı bir nesneyi veya işaretçiyi sileceğini söylemiyorum. İstediği zaman sileceği gerçeğinden bahsediyorum. Ve bu, bence, iyi değil.

Kaldırma ile ve çıkarmadan çalışabilirim. Ve akıllı işaretçiler bile öldürülebilir... Ama yine de nesnelerin silinmesi gerektiğini ve onu yaratanın nesneyi silmesi gerektiğini düşünüyorum.

Ben çok eski kafalı, kemikleşmiş yaşlı bir osurukum.

Georges, bir örnek verebilirsin, seni anlamıyorum. Demek istediğin bu mu? Muhtemelen akıllı işaretçileri kendiniz yapabilirsiniz.

 bool first = false ;

int Foo()
{
   int i;
   if (!first)
  {
     first = true ; 
     i = 123 ;
  }
   return i;   
}

// И ты будешь надеятся, что i сохранит свое значение между сотней вызовов Foo? Может да (очень редко, если Foo вызывается 100 раз подряд), а может и нет.
 
Alexey Volchanskiy :

Georges, bir örnek verebilirsin, seni anlamıyorum. Demek istediğin bu mu? Muhtemelen akıllı işaretçileri kendiniz yapabilirsiniz.

Numara. Bu durumda, bloktan çıkarken değişkenin silinmesi gerektiği açıktır.

new tarafından yaratılan nesnelerden bahsediyorum:

CMyObj* pmoObject  = new CMyObject;

C# standardı şunu belirtir: " Yapılar gibi değer türü nesneleri ve sınıflar gibi başvuru türü nesneleri otomatik olarak yok edilir, ancak değer türü nesneleri içeren bağlam yok edildiğinde, referans türü nesneler çöp tarafından yok edilir. toplayıcı, onlara yapılan son referansın kaldırılmasından sonra süresiz olarak "

Şimdi, bu "belirsiz zamanı" sevmiyorum. Her ne kadar çöp toplayıcının nesneyi kendimden çok daha verimli bir şekilde sildiğini bile itiraf ediyorum, nesneyi onu oluşturan sınıfın yıkıcısında siliyor.

Neden: