[C#]閱讀筆記:indexer, keyword:checked, operator

[C#]閱讀筆記:indexer, keyword:checked, operator

12月到1月向來都是忙錄的月份。除了有專案要結束,學校要交報告,緊接著期末考,公司

尾牙活動表演。還有個奇妙的記錄簿要忙著填滿頁數。

 

為了省時間所以我只好去找了本C#的書來抄....XD

 

我的程式除了一開始在高中的VB算是有系統的學以外,其它都是碰到了才開始翻書找資料

(C#跟本就是完全不懂直接跳下去開發啊!! >_<),所以算是學的有點「哩哩剌剌」,有很

多概念也不是很清楚,很多東西都是沒用到就不知道。

 

其實是應該要找本書來好好從基礎看一看,可是平常上班上課就佔掉我一天的時間,假日

總想偷懶玩一下,所以一直沒有付諸實行。這幾天抄書倒是看到了不少東西是平常比較少

用的,所以特別記一下。

 

1.indexer

public class Garage : IEnumerable // foreach iteration
{
    ...
    // Use ArrayList to contain the Car types.
    private ArrayList carArray = new ArrayList();
    // The indexer returns a Car based on a numerical index.
    public Car this[int pos]
    {
        // Note ArrayList has an indexer as well!
        get { return (Car)carArray[pos]; }
        set { carArray[pos] = value }
    }
} 

2.keyword: checked

主要是在runtime的時候確認是否溢位及引發exception

 

image

上面是測試的範例,如果沒有加checked,則結果如下:

Max value of byte is 255.
sum = 94

 

若是有加checked,則會引發例外:
Max value of byte is 255.
數學運算導致溢位。

 

也可以直接在project的property設定。

image

2.operator

public struct Point : IComparable
{
    ...
    public int CompareTo(object obj)
    {
        if (obj is Point)
        {
            Point p = (Point)obj;
            if (this.x > p.x && this.y > p.y)
            return 1;
            if (this.x < p.x && this.y < p.y)
            return -1;
            else
            return 0;
        }
        else
            throw new ArgumentException();
    }
    public static bool operator <(Point p1, Point p2)
    { return (p1.CompareTo(p2) < 0); }
    public static bool operator >(Point p1, Point p2)
    { return (p1.CompareTo(p2) > 0); }
    public static bool operator <=(Point p1, Point p2)
    { return (p1.CompareTo(p2) <= 0); }
    public static bool operator >=(Point p1, Point p2)
    { return (p1.CompareTo(p2) >= 0); } 

} 

 

PS:

今年從年初開始一直就很冷,希望過年會有個好天氣,不要再下雨了orz

祝大家新年快樂:p