Indexers

MrProg

New member
Indexers

שלום לכולם איך אני יכול להצהיר על יותר מ-Indexer אחד ב-Class ? (הגישה ל-Indexer נעשית באמצעות סוגריים מרובעות, אך מה קורה כאשר יש יותר מ-Indexer אחד?) תודה רבה
 

nattygur

New member
הי כל עוד שאתה משנה

את סוג האינדקס אתה יכול להגדיר כמה שאתה רוצה :
class A { System.Collections.Hashtable oarr = new System.Collections.Hashtable(); public int this[int i] { get { return (int)oarr; } set { oarr = value; } } public string this[long i] { get { return (string)oarr; } set { oarr = value; } } }
 

MrProg

New member
אכן כך

תודה נתי אכן ניתן להגדיר Indexers מרובים מסוג שונה אך אני צריך 2 Indexers מסוג string, מה עושים במקרה כזה ? ראיתי איזו התיחסות קצרה ב-MSDN אך לא הבנתי מה הם רוצים...
 

nattygur

New member
מה הרציונאל מאחורי זה?

אם יש לי 2 אינדקסרים ששניהם מקבלים String שאני קורא לאינדקסר כזה למי אני אמור להגיע? איך אני "מבדיל" בינם ?
 

MrProg

New member
פשוט מאוד

רציתי לממש גישה לכמה אלמנטים מסוג זהה באובייקט לדוגמה
MyObject.Address[StringValue]; MyObject.Citys[StringValue];​
 

gilad g

New member
אז תעשה ככה:

לקלאס של MyObject יהיו שני Properties, שכל אחד מהם הוא מסוג קלאס אחר שלו יש indexer... משהו כזה:
public class Addresses { //this has an indexer. } public class Cities { //this has an indexer too. } public class MyClass { public Addresses Address; public Cities City; }​
כמו כן, אתה יכול לשקול אולי להעביר שני פרמטרים לאינדקסר, שאחד מהם הוא enum לסוג המתאים (Address או City).
 
למעלה