程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#基礎概念二十五問(8)

C#基礎概念二十五問(8)

編輯:關於C語言

8.什麼是索引指示器?

答:

實現索引指示器(indexer)的類可以象數組那樣使用其實例後的對象,但與數組不同的是索引指示器的參數類型不僅限於int

簡單來說,其本質就是一個含參數屬性

示例:

using System;
using System.Collections.Generic;
using System.Text;
namespace Example08
{
  public class Point
  {
    private double x, y;
    public Point(double X, double Y)
    {
      x = X;
      y = Y;
    }
    //重寫ToString方法方便輸出
    public override string ToString()
    {
      return String.Format("X: {0} , Y: {1}", x, y);
    }
  }
  public class Points
  {
    Point[] points;
    public Points(Point[] Points)
    {
      points = Points;
    }
    public int PointNumber
    {
      get
      {
        return points.Length;
      }
    }  
    //實現索引訪問器
    public Point this[int Index]
    {
      get
      {
        return points[Index];
      }
    }
  }
  //感謝watson hua(http://huazhihao.cnblogs.com/)的指點
  //索引指示器的實質是含參屬性,參數並不只限於int
  class WeatherOfWeek
  {
    public string this[int Index]
    {
      get
      {
        //注意case段使用return直接返回所以不需要break
        switch (Index)
        {
          case 0:
            {
              return "Today is cloudy!";
            }
          case 5:
            {
              return "Today is thundershower!";
            }
          default:
            {
              return "Today is fine!";
            }
        }
      }
    }
    public string this[string Day]
    {
      get
      {
        string TodayWeather = null;
        //switch的標准寫法
        switch (Day)
        {
          case "Sunday":
            {
              TodayWeather = "Today is cloudy!";
              break;
            }
          case "Friday":
            {
              TodayWeather = "Today is thundershower!";
              break;
            }
          default:
            {
              TodayWeather = "Today is fine!";
              break;
            }
        }
        return TodayWeather;
      }
    }
  }
  class Program
  {
    static void Main(string[] args)
    {
      Point[] tmpPoints = new Point[10];
      for (int i = 0; i < tmpPoints.Length; i++)
      {
        tmpPoints[i] = new Point(i, Math.Sin(i));
      }
      Points tmpObj = new Points(tmpPoints);
      for (int i = 0; i < tmpObj.PointNumber; i++)
      {
        Console.WriteLine(tmpObj[i]);
      }
      string[] Week = new string[] { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Staurday"};
      WeatherOfWeek tmpWeatherOfWeek = new WeatherOfWeek();
      for (int i = 0; i < 6; i++)
      {
        Console.WriteLine(tmpWeatherOfWeek[i]);
      }
      foreach (string tmpDay in Week)
      {
        Console.WriteLine(tmpWeatherOfWeek[tmpDay]);
      }
      Console.ReadLine();
    }
  }
}

結果:

X: 0 , Y: 0

X: 1 , Y: 0.841470984807897

X: 2 , Y: 0.909297426825682

X: 3 , Y: 0.141120008059867

X: 4 , Y: -0.756802495307928

X: 5 , Y: -0.958924274663138

X: 6 , Y: -0.279415498198926

X: 7 , Y: 0.656986598718789

X: 8 , Y: 0.989358246623382

X: 9 , Y: 0.412118485241757

Today is cloudy!

Today is fine!

Today is fine!

Today is fine!

Today is fine!

Today is thundershower!

Today is cloudy!

Today is fine!

Today is fine!

Today is fine!

Today is fine!

Today is thundershower!

Today is fine!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved