Yapı (Struct) ve Sınıf (Class) Arasındaki Farklar

Yorumlar

6 yorum
C'den gelen Struct yapısı

C'den gelen Struct yapısı (Pascal'cılar ve Delphi'ciler record olarak bilirler) aslında çok basit bir yapı olmasına rağmen C# ile bu yapıya sınıflardakilere benzer işlevler ve yetenekler eklenmiş. Bu da genellikle OOP konusundaki bilgilerini tam oturtamamış yazılımcılar için kafa karıştırıcı olabiliyor. Yanlış bir soru olmasına rağmen sık sık şu soruyu duyuyoruz: "Struct mı kullanalım Class mı kullanalım?". Bu soruya cevap aramadan önce struct ve class yapılarını iyi anlamak lazım. Bu yazıda en temel farklılık olan referans ve değer veri tipleri olma özellikleri basit ve anlaşılır bir örnekle vurgulanmış. Teşekkürler. 

Posted by Volkan TUNALI on 11 Mayıs 2010 - 14:59
Class ve struct arasındaki

Class ve struct arasındaki farkı güzel anlatmışsınız, teşekkürler. Yalnız bir şey sormak istiyorum." Atamalar sonucunda s1’in s2’den bir kopya olduğunu fakat r1’in r2’den bir kopya oluşturmak yerine r2 ile aynı adresi işaret ettiğini gördük."  demişsiniz.  Bunun sebebi nedir?

Posted by Yağmur (doğrulanmamış) on 10 Temmuz 2012 - 14:53
Bir sınıf değişkeni sınıfa

Bir sınıf değişkeni sınıfa ait nesnenin adresini barındırır. Dolayısıyla yapılan atamalarda sadece adresler aktarılır; adresteki nesnenin tamamı değil. Sınıf'ın Struct'tan farkı da budur.Örnektekiler gibi denemeler yaparsanız daha kolay anlaşılacaktır.

Posted by Volkan TUNALI on 23 Temmuz 2012 - 15:43
Stack & Heap

referans ve değer tipini anlamak için önce stack(yığın) ve heap(öbek ) anlamlarını bilmeniz gerekmekte. Şöyle stack bölgesi değer tipli verilerin tutulduğu  heap bölgesi ise referans tipli verilerin tutulduğu bölgedir RAM ' de. Yani değer tipinden (struct türünden bir veri) geldiğinde RAM bunu stack bölgesinde tutacaktır, çünkü struct'lar değer tiplidirler ve dolayısıyla değer tipleri RAM' de yer tutarlar. Fakat class' lar referans tipli olduğundan RAM de yer tutmazlar kodlama yaparken  class classAdi = new Class() diyerek ("new Class()")  şeklinde yazdığın kod ile instance almış oluyorsun( RAM de o sınıf için yer ayırmış oluyorsun) ve dolayısıyla kullanacağın tüm veriler birbirini referans göstererek RAM de işlenecektir. Bu da sana RAM' den yer kazandıracaktır. Umarım anlatabilmişimdir.Saygılar, 

Posted by Misafir (doğrulanmamış) on 14 Mayıs 2013 - 00:24
class nesnesi eşitliği

Merhaba,konu ile alakalı olarak:     struct tan oluşturduğum 2 nesnenin değerlerini aynı girip karşılaştırma yaptırdığım zaman sonuc eşit çıkıyor, Ancak class tan 2 aynı nesne oluşturup karşılaştırma yaptığım zaman bu eşitlik sağlanmıyor. Bunun sebebi ve hangi ilkeye bağlı olduğunu paylaşırsanız çok sevinirim.

Posted by Mert (doğrulanmamış) on 22 Aralık 2014 - 00:41
s2 stack alanında bir

s2 stack alanında bir referansa sahip s1'de s2'den aldığı verinin aynısını başka bir referans pointer alarak stack alanında tutmasından dolayı kopyası olarak nitelendirilir. r2, s2 gibi stack 'te bir referansa sahip r1'ise stack'te s1 gibi ayrı bir referans alarak bellekte fazla alan kaplamadan direk r2'ye ait referansı göstermektedir. Bu sayede performans artışı gözlenebilir. Küçük uygulamalarda pek sorun yaratmaz ancak kapsamlı bir uygulama yapıyorsanız bu yapı çok önemlidir.

Posted by Misafir (doğrulanmamış) on 25 Aralık 2015 - 02:42

Yeni yorum gönder

Bu alanın içeriği gizlenecek, genel görünümde yer almayacaktır.
  • Web sayfası ve e-posta adresleri otomatik olarak bağlantıya çevrilir.
  • İzin verilen HTML etiketleri: <a> <img> <em> <strong> <cite> <code> <pre> <ul> <ol> <li> <dl> <dt> <dd>
  • Satır ve paragraflar otomatik olarak bölünürler.
  • Syntax highlight code surrounded by the {syntaxhighlighter OPTIONS}...{/syntaxhighlighter} tags.

Biçimlendirme seçenekleri hakkında daha fazla bilgi

CAPTCHA
Bu soru sizin otomatik spam yapan bir makina olmadığınızdan emin olmak için soruluyor.
Image CAPTCHA
Enter the characters shown in the image.