Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

c# sorularım


b1vRiP

Öne çıkan mesajlar

ya arkadaşlar benim bi sorunum var. c# çalışıorum da bu indeksleyici ve özellikleri ne kadar okursam okuyim tam anlıyamadım.saçma sapan çeviriler buldum hep cidden hiç bir cümlesi anlaşılmıyor.atladım bölümü ben de.ama içime dert oldu.

ben kullanılış şeklini falan anladım.salt okunur-yazılır davasını da anladım ama tam olarak bu indeksleyicilerin önemini ve görevini çakamadım.

anladığım kadarıyla o classta her yaptığım işlem önce indeksleyicinin mi üzerinden geçio yoksa tamamen sıkıyo muyum şu an?

özellikler de zira öyle.tiksindim ya of.

anlatmaya üşenirseniz de ingilizce güzel bir döküman gösterirseniz sevinirim.
Link to comment
Sosyal ağlarda paylaş

indexer ise bahsettigin sey, ogrenme surecinde cok onemli degil, ustunde durmana gerek yok. temel olarak her class'i array gibi kullanmana yarayan ozellik diye dusunebilirsin. misal string icin

string mystring = "ali";

diye tanimladigin bir string'e bir arraymis gibi ulasabilirsin. mystring[0] dedigin zaman sana 'a' dondurur char olarak.
Link to comment
Sosyal ağlarda paylaş

kitapta duruma göre genişleyip kısalan diziler yaratabilirsiniz diyodu..

e zaten string kullanarak o zaman bunu çok kolay yazabilirim öyle abartı bişi değil.

tabii daha efektif bi yolu vardır :)

tamam sağol ilerde karşılaşınca bakarım o zaman..

özellik de mi öyle bişi?
Link to comment
Sosyal ağlarda paylaş

yok "string de kullanırım" diye bir şey olmaz =) müm'ün orda bahsettiği, aslında "String" objesinin de bir indexer olduğu.. sonuçta mystring[0] diye erişebiliyorsun ya o stringin karakterlerine, bu ne demek? aslında char değerinde bir array'e doğrudan class içinde erişiyorsun demek..

önce şunu söyleyeyim; bence fazla türkçeleştirme syntax'a ait kelimeleri. anlaşılman zorlaşır =) özellik yerine property, indeksleyici yerine indexer de sen en iyisi ^^

property ile indexer aynı şey değil. farklarını anlatmaktan öte, indexer nerede nasıl kullanılabilir. bir örnek veriyim. bence nerede kullanıldığını anladıktan sonra kuralları çözmek daha kolay oluyor..

mesela düşün, bir futbol takımı class'ın var.. bu class'ın member'larını düşün (property'ler de member'dır). herhalde ilk aklımıza gelen, futbolcular olur değil mi? misal bu örneği kodlayalım. futbol takımı class'ı, bir indexer class olacak.


static void Main(string[] args)
{
FootballTeam ft = new FootballTeam();
ft[0] = new Player("Racta");
ft[0].Shoot();
}

class FootballTeam
{
private Player[] players = new Player[11];
public Player this[int index]
{
get
{
return players[index];
}
set
{
players[index] = value;
}
}
}

class Player
{
public string Name = "DefaultPlayer";

public Player(string name)
{
Name = name;
}

public void Shoot()
{
Console.WriteLine("{0} is shooting", Name);
}
}

futbol takımı içinde racta diye bir oyuncu yaratıp, şut çektirdim. güzel örnek oldu bence =)

edik: smiley
Link to comment
Sosyal ağlarda paylaş

zaten pek cok seyi baska yollarla da yapabilirsin. onemli olan sana sundugu kolaylik. misal racta'nin yazdigi kodda su bolum cok onemli

Ractamainus said:

static void Main(string[] args)
{
FootballTeam ft = new FootballTeam();
ft[0] = new Player("Racta");
ft[0].Shoot();
}


bir class olustuyorsun ve bu class'a bir arraymis gibi erisip kullanabiliyorsun. bosun bosuna bunun icin bir ton fonksiyon yazmiyorsun.
Link to comment
Sosyal ağlarda paylaş

Kithnos said:
Arraylist al = new arraylist

demek gibi birsey mi oldu bu ?

hmmm şimdi yaklaşım şöyle..

ortada bir array var, evet. ama bu array footbalteam'den türemiş objeleri değil de, "player" class'ından türemiş objeleri barındırıyor.

ama bu array'in kendisini de, senin oluşturduğun bir class olarak düşün. örneğimizde footballteam class'ı, array'in kendisine denk geliyor bir nevi. yanlış anlama olmasın, array'in barındırdığı item türüne değil, bizzat array'e denk. buna indexer class diyoruz.

misal footballteam class'ını metodlarla falan genişletseydik, yukarıdaki kodun yanına şöyle şeyler ekleyebilirdik;

ft.OffsideTrap = true; //takım ofsayt taktiği uygulasın diyoruz.
ft.Defense(); //takıma defans yapmasını söyleyen metod

vs..

Burdaki olay ne? Sadece bir obje (footballteam) yaratarak, hem o objeyi örnekleyebiliyor, hem de alt objelerine (player) hiyerarşik, mantıksal bir erişim sağlıyoruz (bkz.: "ft" ve "ft[0]")
Link to comment
Sosyal ağlarda paylaş

class C extends AbstractList
mi yapiyo implicit olarak yani? :)

Gorunuse gore kendin boyle siniflar arasi hiyerarsiler kurabiliyorsun, fazla hard coding degil mi? Objelerin kendi icinde olmasi gereken seyleri disariya tasiriyosun gibi geldi bana, Object Oriented Programming'e aykiri bisey bu eger dogru anladiysam.
Link to comment
Sosyal ağlarda paylaş

Bu indexer zımbırtısının herhangi bir attribute'tan farkı yok ki. Yani tek farkı köşeli parantez kullanılması.

Indexer içinde int dışında herhangi bir tip kullanabiliyorsunuz, birden fazla parametre tanımlayabiliyorsunuz vs. Intern olarak array ya da list falan da kullanmak şart değil. Şöyle saçma şeyler de yazabilirsiniz:

public float this[float n]
{
get
{
return n * 2;
}
}


İlla kullanılacaksa bence (genellikle) index'in readonly olması daha mantıklı. Bir veri tipi yaptıysanız "bilmem kaçıncı elemanı al" metodunu "get(int)" ya da "charAt(int)" gibi tanımlamak yerine böyle tanımlarsınız.

Ha ayrıca bu indexer zımbırtısı private, protected olarak falan da tanımlanabiliyor. İlla public interface'e açmanız gerekmez yani. Class içinde kolaylık sağlayabilir kodlarken falan.
Link to comment
Sosyal ağlarda paylaş

mirage, indexer içinde array kullanmazsan, saçma bir şey yapmış olursun :) çünkü verdiğin örnek için property'ler var. indexer'ın amacı biraz farklı.

indexer, array yapısında member olarak düşünülmeli. misal bir table düşünün. ben bu table'ı, indexer class olarak handle edip, kolonları ve satırlarına da index olarak erişebilirim. şöyle ki;

CustomList cList = new CustomList();
string myData = cList[4][3]; //4. satırın 3. kolonu gibi..

Yukarıdaki örneği MS, sharepoint api'sinde sıklıkla kullanıyor.

senin dediğin türlerde de tabii ki kullanılabilir teknik olarak. ama anlamsız olur.

penth, indexer bir class'ı extend etmiyor. futbol örneğinde misal.. player ayrı, footballteam ayrı class.. footballteam içinde 11 tane player türünde member'a ulaşmak için indexer class kullandık sadece. dolayısıyla OOP'ye aykırı değil indexer. hatta bence çok iyi bir tamamlayıcı, erişim açısından.
Link to comment
Sosyal ağlarda paylaş

Ben anlamlı olacağını iddia etmedim ki. Verdiğim örneğin de saçma olduğunu açık açık yazdım zaten. :)

Demek istediğim, array ya da list gibi bir veri yapısıyla ile birebir ilişkilerdirilmesi şart değil. Intern veri yapısına erişmeden önce index üstünde oynamalar yapman gerekebilir mesela; ya da indexer içine exception handling koyabilirsin. Vs vs..
Link to comment
Sosyal ağlarda paylaş

Okuyarak C# ögrenemezsin. Aslında hicbir dil ögrenemezsin. Visiul studio yu ac adim adim yaz kücük kodlar gör nasil calistigini olayın. Ben deneyimli bir bilgisayar mühendisi olarak tavsiye veriyorum..google in msnd library i kullanarak da cok ilerleyebilirsin.. Ama kitaptan okursan bi halt olmaz sölim sana 3 yilda birazcik ilerlersin belki. :)
Link to comment
Sosyal ağlarda paylaş

ELena said:
Okuyarak C# ögrenemezsin. Aslında hicbir dil ögrenemezsin. Visiul studio yu ac adim adim yaz kücük kodlar gör nasil calistigini olayın. Ben deneyimli bir bilgisayar mühendisi olarak tavsiye veriyorum..google in msnd library i kullanarak da cok ilerleyebilirsin.. Ama kitaptan okursan bi halt olmaz sölim sana 3 yilda birazcik ilerlersin belki. :)


kendi kendine yazdigin kodla daha hizli ilerlersin ancak structured programlamaci olur cikarsin, kodlarin karmakarisik olur, spagetti kod hesabi.

okuyarak ilerlersen daha yavas kod yazarsin ama mimariyi ogrenirsin Object oriented programci olursun, yazdigin kod anlasilabilir ve degerli olur. diyorum ben.
Link to comment
Sosyal ağlarda paylaş

reyou said:
ELena said:
Okuyarak C# ögrenemezsin. Aslında hicbir dil ögrenemezsin. Visiul studio yu ac adim adim yaz kücük kodlar gör nasil calistigini olayın. Ben deneyimli bir bilgisayar mühendisi olarak tavsiye veriyorum..google in msnd library i kullanarak da cok ilerleyebilirsin.. Ama kitaptan okursan bi halt olmaz sölim sana 3 yilda birazcik ilerlersin belki. :)


kendi kendine yazdigin kodla daha hizli ilerlersin ancak structured programlamaci olur cikarsin, kodlarin karmakarisik olur, spagetti kod hesabi.

okuyarak ilerlersen daha yavas kod yazarsin ama mimariyi ogrenirsin Object oriented programci olursun, yazdigin kod anlasilabilir ve degerli olur. diyorum ben.


simdi hersey iyi guzelde bu structured / object oriented programci ayrimini nasil yaptin? bugun linux kernel programcilari C ile yaziolar dili ve structural dil kullanıyorlar? kötü programcılarmı? yazdıkları kod değersiz mi?

object oriented yerine ve durumuna göre avantajlidir ama oop > all die düşünmüyorum açıkcası
Link to comment
Sosyal ağlarda paylaş

reyou bence nyp tabanlı bir dille, sanki c de yazıyormuş gibi yapısal kodlar yazarsın kargacık burgacık olur demek istemiş. Ki öyle demek istemişse haklı bence. Yani sonucta nyp bir dili öğrenmekten ziyade ilk önce dilden bağımsız olarak nyp ilkeleri ve tasarım şablonları falan öğrenilmesi daha mantıklı olur. O da msdn le falan olmaz oturup kitaptan çalışacaksın.
Link to comment
Sosyal ağlarda paylaş

eheh bende aklimdakileri ne sekilde yazsam diye dusunurken biri beni yerime yazmis zaten.

direk kendi kendine kod yazarsin, super coder olursun ama 50 yasina geldiginde hala kod yazarsin. ben C# i baz alarak structured dedim, yani C ile tabikide structered yazacaksin, ama OOP dillerinde bunu yapamazsin. yaparsin ama kodun 2 sene sonra kullanilamaz hale gelir.

ama kitaptan isin temelini anlarsin,programlama dilinde hangi yapi ne yuzden var, neden olusturulmus yada kaldirilmis (ornegin C# ta multiple inheritence in kaldirilmasi interface getirilmesi) gibi trick leri bilirsen, 50 yasinda project manager olursun.
Link to comment
Sosyal ağlarda paylaş

reyou said:
eheh bende aklimdakileri ne sekilde yazsam diye dusunurken biri beni yerime yazmis zaten.

direk kendi kendine kod yazarsin, super coder olursun ama 50 yasina geldiginde hala kod yazarsin. ben C# i baz alarak structured dedim, yani C ile tabikide structered yazacaksin, ama OOP dillerinde bunu yapamazsin. yaparsin ama kodun 2 sene sonra kullanilamaz hale gelir.

ama kitaptan isin temelini anlarsin,programlama dilinde hangi yapi ne yuzden var, neden olusturulmus yada kaldirilmis (ornegin C# ta multiple inheritence in kaldirilmasi interface getirilmesi) gibi trick leri bilirsen, 50 yasinda project manager olursun.


kitap her zaman basvuracabilecegin yardımcın zaten.. ben sen yanlissin o yanlis demiyorum yazılım işi, sunu yaparsan project manager olmak degildir. Yazılım icindeki coder askina bagli.. sen ne kadar cok severek yazarsan , üretirsen ne olmak istiyorsan onu olursun. Herkes iyi coder olamaz bu işi yapabilmek icin zevk almak gerekir.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...