C# Indexed Class
-
Cümle sınıfında kelimeleri ve bu kelimelerin özelliklerini barındırmam gerekiyor. Örnek olarak; Cümle> "Konu Sadece Üyelere Gözüksün." Bu cümle'ye ait kelimeler de "Konu, Sadece, Üyelere, Gözüksün." ben bu kelimelerede çeşitli özellikler vermek istiyorum. Yani Cümle Class'ı içinde Kelime Class'ınıda barındırmak istiyorum. bununla ilgili 2 ayrı class yazdım internette araştırdım Indexed Class'ları ancak, Cumle m_Cumle = new Cumle(); m_Cumle.Kelimeler[0]. yaptığımda . (nokta) dan sonra indexi seçili kelimenin propertiesine ulaşmak istiyorum ancak başaramıyorum. Nasıl yapabilirim bunu?
-
public partial class yazarak yapabilirsin kanımca.
-
=) partial baska bişey
Cumle nin IEnumerable dan tureyen bir class olması lazım böylece foreach (kelime k in cumle) şeklinde erişebilirsin.
-
partial, sinifin kodlarinin parcali sekilde tanimlanacagini derleyiciye bildirir. ;-)
cumle sinifinin icindeki Kelimeler property sini generic bi koleksiyon olarak bildirirsen (mesela public List<Kelime> gibi) yapabilirsin ;-)
eger direk cumle nesnesini indexlemek istersen (Cumle cml = new Cumle(); cml[0]. gibi)
o zamanda, index operatorunu yuklemen gerekir.ikisinide asagida orneklendirdim ;-)
class Program { static void Main(string[] args) { Cumle cm = new Cumle(); cm.Kelimeler.Add(new Kelime("Merhaba")); cm.Kelimeler.Add(new Kelime("Surasi")); cm.Kelimeler.Add(new Kelime("Tahribat")); cm[1] = new Kelime("Orasi"); cm.Kelimeler[1] = new Kelime("Burasi"); Console.Write("{0}\n", cm.ToString()); Console.ReadKey(); } } class Cumle { /*kelimeleri tutucak koleksiyon*/ private List<Kelime> m_kelimeler = new List<Kelime>(); /*yukaridakinin propertysi */ public List<Kelime> Kelimeler { get { return m_kelimeler; } } public Cumle() { } /*index operatorunun yuklenmesi*/ public Kelime this[int i] { get { return m_kelimeler[i]; } set { m_kelimeler[i] = value; } } public override string ToString() { string str; int i; for (i = 0, str = ""; i < m_kelimeler.Count; ++i) { str += m_kelimeler[i].ToString() + " "; } return str; } } class Kelime { string m_strKelime; public Kelime(string str) { m_strKelime = str; } public override string ToString() { return m_strKelime; } } -
Cümle sınıfında Kelimeyi kelime[] şeklinde tanımladım böylece hedefime ulaştım. Cevap verenlere teşekkürler.
Toplam Hit: 990 Toplam Mesaj: 5
