Selamlar. Sorum : C#'ta class ve struct'ı dizi gibi kullanabilyoruz örneğin
class Program { static void Main(string[] args) { Program[] a = new Program[5]; } }
ya da
struct Program { static void Main(string[] args) { Program[] a = new Program[5]; } }
şimdi burada indekleyici kullanılmış arka planda desem olmayacak çünkü indeksleyici instance'ın dizi gibi kullanılmasını sağlıyor. Ama class veya struct'ın dizi gibi kullanılmasını sağlayan şey nedir ?
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
C'de struct oluşturma ve struct dizisi oluşturma nasılsa C# ta da öyle olmalı yani struct hafızada (heap) ne kadar yer kaplıyorsa o kadar alan ayrılıp hafızaya yerleştiriliyor, endeks te hafızadaki adresi tutan bir değişken oluyor sadece. Yani class veya struct'ın dizi gibi kullanılmasını sağlayan şey, normal bir dizinin (array) kullanılmasından çok farklı deil, sadece dizi elemanları örneğin bir integer kadar (2-8byte) yer tutuyorsa, struct ve class durumunda tanımlanan struct ve class ın büyüklüğü kadar yer tutar.
Merhaba. struct sadece stack'te yer tutuyor. Özelliği de bu zaten. Ama şunu farkettim düşünürken indeksleyiciyle dizi operatörü farklı şeyler gibi geldi çünkü indeksleyici köşeliparantez operatörlerine istediğimiz şeyi yaptıyoruz ama Struct ve class'tan oluşturudumuz diziler daha farklı bişey olması lazım çünkü eğer indeksleyici olsaydı tekrar override edebilirdik diye düşünüyorum ama yine de kesin değil söylediğim bunu okuyanlar yani böyleymiş demesin sadece tahmin yani.
New dinamik dizi olusturmaya yaramıyor mu heap'te oluşturuluyor diye biliyorum ama program bu kadarsa yapı ya da sınıf oluşturmaya gerek yok bence sonucta daha fazla değişkeni tekrar tekrar yazmamak icin kullanılıyor.
new operatörü ile oluşturulan herşey int , string, veya struct , class olsun heap te oluşturulur örneğin
quote:
int[] dizi = new int[10000];
Sinifim[] sinif_dizim = new Sinifim[10000];
de 10.000 x int + 10.000 x Sinifim büyüklüğü stack'te oluşturulsa stack'ın kullanım amacına ters düşer cunku stack hızlı çalışması gereken bellek bölgesidir.
Sorum :
C#'ta class ve struct'ı dizi gibi kullanabilyoruz
örneğin
ya da
şimdi burada indekleyici kullanılmış arka planda desem olmayacak çünkü indeksleyici instance'ın dizi gibi kullanılmasını sağlıyor. Ama class veya struct'ın dizi gibi kullanılmasını sağlayan şey nedir ?
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
< Bu mesaj bu kişi tarafından değiştirildi MSYYSM -- 9 Kasım 2017; 11:41:32 >