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.
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.
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
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
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);
}
}
}
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.