原文
先來看看ienumerable介面的定義:
public這個介面非常簡單,主要就是乙個方法getenumerator,用來返回乙個ienumerator物件。繼續深入下去,ienumerator介面的定義如下:inte***ce
ienumerable
public上面的ienumerator介面定義的屬性和方法,只有乙個目的,就是實現如何遍歷。下面具體解釋一下:inte***ce
ienumerator
}
當用foreach迴圈來訪問乙個物件的時候,其實是預設的呼叫了物件裡面的getenumerator()方法。而該方法就是由ieumerable介面給暴露出來的,所以如果想自定義乙個能實現列舉功能的集合類就要先實現乙個ienumerable介面,然後實現裡面的getenumerator方法。如下所示:
namespace下面舉乙個例子,這裡我們自定義了乙個類car,然後對car的集合進行排序。test
is going mph
", c.name, c.age);
} console.readkey();
} }
public
class
garage:ienumerable
public
ienumerator getenumerator()
} public
class
car
public
int age
public car( string name, int
age) } }
public假如我們直接呼叫sort方法,就好悲劇丟擲invalidopeartionexception異常class
car
public
int year
public
int seats
}
icomparable介面
icomparable介面提供了比較某個特定型別物件的方法。這裡來說,我們要讓car實現icomparable介面來達到比較car物件的目的,從而實現排序。實現icomparable介面,就必須實現compareto方法,具體如下:
public上面我們的car物件實現了icomparable介面,按照name字串屬性來比較。直接執行sort()方法,就能夠得到排序結果:class
car: icomparable
public
int year
public
int seats
public
int compareto(object
obj)
}
icomparer介面
icomparer介面可以提供更加豐富和靈活的排序功能,它的實現是乙個比較器。比如,你可能需要在不同的場合,根據不同的屬性來排序。
下面就來實現乙個根據car的year屬性來排序。
public在呼叫sort方法的時候,需要指定使用的icomparer實現:class caryearcomparer: icomparer
}
cars.sort(new caryearcomparer());得到的排序結果和上面的根據name屬性不同:
mysql 列舉與集合 mysql列舉和集合型別
列舉和集合型別 列舉 enum 型別,最多可以定義 65535 種不同的字串從中做出選擇,只能並且必須選擇其中一種,占用儲存空間是乙個或兩個位元組,由列舉值的數目決定 集合 set 型別,最多可以有 64 個成員,可以選擇其中的零個到不限定的多個,占用儲存空間是乙個到八個位元組,由集合可能的成員數目...
ATL中的集合和列舉
cool 2004 11 22 11 55 00 類別 vc mfc 中集合和列舉器的關係非常類似於stl中的容器和迭代器的關係。列舉器 如果乙個 物件可以被稱為乙個 集合 那麼很顯然,該物件內部肯定是一些型別相同的資料的集合,當我們要將內部這些資料 暴露 給客戶端使用時,如果直接照搬stl的模式,...
集合排序和比較
hashmapmap maps.newhashmap map.put action action map.put demo demo map.put ass ass 將map的key存入集合 listlist lists.newarraylist map.keyset list集合進行排序 coll...