C#ta dizi konusunda yardım

C# (C Sharp) veya Java ile ilgili konuları buraya yazabilirsiniz.
Cevapla
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

C#ta dizi konusunda yardım

Mesaj gönderen adelphiforumz »

Selamlar;

Ben C# konusunda oldukça yeniyim delphi tarafında yapmış olduğum bazı işlemlerin c# ta yapğmaya çalıştığımda çokda fazla başaramadım.
Siz üstadlardan bu konuda biraz yardım rica edeceğim.

Aşağıdaki delphide yaptığım gibi bir işlemi c# tarafında yapmam mümkünmü
Eğer mümkün ise küçük bir örnekleme yapabilirmisiniz.

Teşekkürler; İyi Çalışmalar

Kod: Tümünü seç

type
  DiziRec=Record
    Eleman1:Integer;
    Eleman2:String;
    .........
    ........
end;

 Dizi:  array of DiziRec;

Procedure.......
begin
  SetLength(Dizi, 5);
  Dizi[0].Eleman1 := 1;
  Dizi[0].Eleman2 := 'AAA';
end
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: C#ta dizi konusunda yardım

Mesaj gönderen aslangeri »

s.a.
dizirec i class olarak tanımla.

Kod: Tümünü seç

dizi:array of dizirec
kısmınıda

Kod: Tümünü seç

List<dizirec> dizi=new List<dizirec>();
dizirec eleman = new dizirec();
eleman.xxxx=5;
eleman.yyyy="fsafda";
dizi.add(eleman);
şeklinde kullanabilirsin.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: C#ta dizi konusunda yardım

Mesaj gönderen adelphiforumz »

aslangeri hocam

anlattıklarından benim anlıyabildiğim kadari ile aşağıdaki gibi bir şey yapmaka çalıştım fakat
başarılı olamadım yaptığım hata nedir? yardımcı olabilirmisiniz.

Kod: Tümünü seç

    DiziRec Dizi = new DiziRec();
    for (int i = 0; i < 100; i++)
    {
       Dizi.Saha1[i] = "xxx";
       Dizi.Saha2[i] = "yyy";
     [b]  Dizi.Add(i);[/b]   }

    class DiziRec
    {
      public string[] Saha1;
      public string[] Saha2;
    }
Dizi.add(i) satırında işler karıştı bir türlü burayı geçemedim.
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: C#ta dizi konusunda yardım

Mesaj gönderen aslangeri »

s.a.
c# da dinamik dizi yok onun için List kullanıyoruz.
dizirec classını tanımladıktan sonra
dizirec elemanlarından oluşan bir List kullanacaksın.
kod şöyle bişey olacak

Kod: Tümünü seç

 class DiziRec
    {
      public string Saha1;
      public string Saha2;
    }
 List<DiziRec> Dizi = new List<DiziRec>(); --burda dizimizi (listemizi) oluşturuyoruz.
 DiziRec eleman; //bu listeye ekleyeceğimiz eleman
for (int i = 0; i < 100; i++)
    {
  eleman= new DiziRec();
       eleman.Saha1 = "xxx";
       eleman.Saha2 = "yyy";
       Dizi.Add(eleman);
  }
kabataslak böyle bişey olacak.
List için bi namespace eklemen lazım. "Colections" sanırım şimdi tam hatırlıyamıyorum hangisi olduğunu.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
tears
Üye
Mesajlar: 79
Kayıt: 29 Kas 2004 12:32

Re: C#ta dizi konusunda yardım

Mesaj gönderen tears »

Kod: Tümünü seç


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication25
{
  class Program
  {

    struct DiziEleman
    {
      public string alan1;
      public string alan2;
    }


    public static void Main(string[] args)
    {
      DiziEleman[] orndizi = new DiziEleman[10];

      for (int i = 0; i < 10; i++)
      {
        orndizi[i] = new DiziEleman();
        orndizi[i].alan1 = "aaa";
      }

      Console.WriteLine(orndizi[1].alan1);

    }
  }
}

unalaygun
Üye
Mesajlar: 139
Kayıt: 27 Mar 2004 12:34
Konum: istanbul

Re: C#ta dizi konusunda yardım

Mesaj gönderen unalaygun »

c# da dinamik dizilerin görevine gören Koleksiyonlar vardır.
Onlar dinamik diziler gibiçalışırlar.
aslnageri hocamın yazmış olduğu bir de generic list yapısı vardır.
Bu yapı bizi bozing unbozing işlermlerinde kurtarmaktadır.
Koleksiyonları kullanmak için namespace olarak "using System.Collections;" name spaceini eklemelisiniz.
Koleksiyonlara örnek kod aşağıdadır.
ArrayList Liste = new ArrayList();///Kolekyion nesnesi oluşturuluyor.
for (int i = 0; i < 100; i++)
{
DiziRec sinifim=new DiziRec(); ///Ekleyeceğimiz sınıgımızın tanımlandığı yer.
sinifim.Saha1="XXX";
sinifim.Saha2="YYY";
Liste.Add(sinifim);
}

Bunun dışında generic listlere örnek kod ise aşağıdadır.

List<DiziRec> Liste = new List<DiziRec>();///Kolekyion nesnesi oluşturuluyor.
for (int i = 0; i < 100; i++)
{
DiziRec sinifim=new DiziRec(); ///Ekleyeceğimiz sınıgımızın tanımlandığı yer.
sinifim.Saha1="XXX";
sinifim.Saha2="YYY";
Liste.Add(sinifim);

}

Boxing ve unbozing işleminden kurtaran tanımlama List<T> tanımında yer alan "T" dir. T yerine burda çalışmak istediğimiz sınıf adını yazıyoruz.
List<DiziRec> Liste = new List<DiziRec>();
Yukarıdaki tanımlamada ben sadece Dizirec sınıfının listesini tutan bir liste tanımladık.
Yukarıdaki normal koleksiyonda ise ne isteseniz saklayabilirsiniz.Bunalra erişirken unboxing saklarkenken de bozing işlemi yaparsınız.
Bunun maliyeti hafıza ta tutacağı yer miktarı fazla olur. Ama kullanılması gerektiği yerler kuşkuşuz çıkacaktır.
Umarım yardımı olur.
İyi çalışmalar.
derviş
Cevapla