c# da c deki gibi struct tanımlayamıyorum??

C# (C Sharp) veya Java ile ilgili konuları buraya yazabilirsiniz.
Cevapla
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

c# da c deki gibi struct tanımlayamıyorum??

Mesaj gönderen unicorn64 »

merhaba arkadaşlar.

hani c de

Kod: Tümünü seç

 
struct x{
int deger
struct x * next;
};
tarzında struct tanımlayı bunu bağlı liste vb amaçlarla kullanıyoruz ya;

işte bunu c# da yazamıyorum. struct içindekipointer i tanımlamaya çalıştığımda daha kod yazarken bi sürü warning hata bişiler alıom.. bunu c# da nasıl tanımlarım..??
memiky
Üye
Mesajlar: 116
Kayıt: 17 Kas 2004 01:52
İletişim:

Mesaj gönderen memiky »

Struct veya yapılar Class’lara çok benzemektedir. Aralarındaki en önemli fark bellekte tutuldukları yerdir. Class’lar belleğin Heap kısmında tutulan referans türü iken; yapılar değer türü olup stack’te tutulmaktadır.

Yapılar, tıpkı sınıflar gibi yapıcı metotlar, metotlar, sabitler, alanlar ve indeksleyiciler içerebilirler. Struct’lar başka Struct’ın veya Class’ın mirasçısı olamaz. Ancak Struct’lara Interface’ler uygulanabilmektedir. Yapılar kalıtımı desteklemedikleri için abstract veya virtual olarak işaret edilemezler. Kısaca anlatmak gerekirse Struct’ları bazı özelleri kırpılmış Class’lar olarak ifade etmek mümkündür.

Ne zaman Class ne zaman yapı hazırlanması gerektiği konusu tartışmaya açık bir konu olmakla birlikte struct’ın örneği bellekte fazla yer kaplamayacaksa struct tercih edilebilir. Aşağıda verilen uygulamada “oyuncular” adında ve 3 alana sahip bir yapı tanımladım.

Kod: Tümünü seç

using System;
namespace yapilar
{
  class sinif_1
    {
 struct oyuncular
  {
     public string ad;
     public double boy;
     public string takim;
   }
    public static void Main()
       {
      }
}
}
Bu struct’ı yakından incelerseniz Class ile sınırlanan bloğa yazıldığını görebilirsiniz. Buna göre Struct’lar Class’ların içinde olabilmektedir. Kodun okunur yapmak için Struct; Class tarafından sınırlanan bloktan çıkarılabilir. Bu işlemin nasıl yapıldığını aşağıda görebilirsiniz.

Kod: Tümünü seç

using System;
namespace yapilar
{
  class sinif_1
    {
      public static void Main()
       {
       }
    }
struct oyuncular
  {
     public string ad;
     public double boy;
     public string takim;
  }
}

Yapıda yer alan alanlar istenen tipte olabilir. Bu şekilde tanımlanan yapıyı kullanabilmek için yapıdan yararlanarak nesne hazırlamak veya yapının örneğini almak gerekir. Yapının örneğinin nasıl hazırlandığını aşağıda görebilirsiniz.

Kod: Tümünü seç

using System;
namespace yapilar
{
  class sinif_1
    {
      public static void Main()
       {
         oyuncular nesne;
         nesne = new oyuncular();
       }
    }
struct oyuncular
  {
     public string ad;
     public double boy;
     public string takim;
  }
}
En son memiky tarafından 20 Ara 2006 07:48 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

Kod: Tümünü seç

unsafe struct Yapi
{
    int i;
    Yapi *next;
}
unsafe ile pointer ları .net te kullanabilirsin, tabi ide den de Allow unsafe code demek gerekiyor.. Ancak çok özel bir yapı kullanmayacaksanız ArrayList objeside bağlı liste mantığı ile çalışır.
kolsya gelsin..
DeveloperToolKit

..::|YeşilMavi|::..
Cevapla