Articles → .NET → Indexers in C#

Indexers in C#




















Introduction







Syntax


<modifier> <return type> this [argument list]
{
  get
  {
    // Get codes goes here
  }
  set
  {
    // Set codes goes here
  }
}



Creation of XML file




<root>
	<subject value = ".Net"></subject>	
	<subject value = ".Net Web Service"></subject>
	<subject value = "ADO.NET"></subject>
	<subject value = "IBM Lotus Notes"></subject>
	<subject value = "JavaScript"></subject>
	<subject value = "Silverlight"></subject>
	<subject value = "Software Testing"></subject>
	<subject value = "SQL Server"></subject>
  <subject value = "WPF"></subject>
</root>





Creating a class to implement indexer


class Subject
 {
        private Dictionary<string,string> _subjectDictionary = new Dictionary<string,string>();

        /// <summary>
        /// Indexer
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public string this[int index]
        {
            get
            {                
                string key = _subjectDictionary.Keys.Where((n, i) => i == index).FirstOrDefault();               
                return string.Format("{0}",_subjectDictionary[key]);
            }
        }

        /// <summary>
        /// Get List of subjects
        /// </summary>
        private void GetListOfSubjects()
        {
            DataSet ds = new DataSet();
            ds.ReadXml("subject.xml");
            for (int i = 0; i < ds.Tables[0].Rows.Count - 1; i++)
            {
                _subjectDictionary.Add(i.ToString(), ds.Tables[0].Rows[i]["value"].ToString());
            }
        }

        /// <summary>
        /// Constructor
        /// </summary>
        public Subject()
        {
            if (_subjectDictionary.Count == 0)
            {
                GetListOfSubjects();
            }
        }
        /// <summary>
        /// Subject Count to save from 
        /// index out of range
        /// </summary>
        public int SubjectCount
        {
            get
            {
                return _subjectDictionary.Count;
            }            
        }
    }



Code explanation






private Dictionary<string,string> _subjectDictionary = new Dictionary<string,string>();










public string this[int index]
{
  get
  {                
    string key = _subjectDictionary.Keys.Where((n, i) => i == index).FirstOrDefault();               
    return string.Format("{0}",_subjectDictionary[key]);
   }
}





Reading the xml file




Subject oSubject = new Subject();
  StringBuilder sbMenu = new StringBuilder(string.Empty);
  sbMenu.Append("<ul id = \"MenuLeft\">");        
  for (int i = 0; i < oSubject.SubjectCount; i++)
  {
    sbMenu.Append("<li>");
    sbMenu.Append(oSubject[i].ToString());
    sbMenu.Append("</li>");            
  }
  sbMenu.Append("</ul>");
  divLeftMenu.InnerHtml = sbMenu.ToString();





Conclusion





Posted By  -  Karan Gupta
 
Posted On  -  Monday, June 21, 2010

Query/Feedback


Your Email Id  
 
Subject 
 
Query/FeedbackCharacters remaining 250