[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
上面是測試的範例,如果沒有加checked,則結果如下:
Max value of byte is 255.
sum = 94
若是有加checked,則會引發例外:
Max value of byte is 255.
數學運算導致溢位。
也可以直接在project的property設定。
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