我有一個類描述一個數組,可以序列化爲自定義二進制格式,並返回。該數組有一個單一的類型參數,指定其值,可以是int
,double
或bool
。我想寫這樣的:將C#類型參數約束爲一系列基元類型?
class BArray<T> where T: int, double, bool {
BArray(T[] values) { ... }
byte[] Encode() { ... }
T[] Decode(byte[] bytes) { ... }
...
}
我知道這不能編譯,但有沒有辦法做到這一點?如果不是,那麼接下來做什麼最好的方法是什麼?實質上,根據數組值的類型,我需要Encode
和Decode
方法的不同行爲。此外,我希望用戶類不擔心了不同的實現,即下面應該工作:
var ints = new int[] { 1, 2, 3 };
var intB = new BArray(ints);
var dbls = new double[] { 3, 4 };
var dblB = new BArray(dbls);
但使用未實現的類型應該失敗:
var strs = new string[] { "this", "should", "fail" };
var strB = new BArray(strs); // TYPE ERROR!
謝謝!
[通用方法與多個約束]的可能重複(http://stackoverflow.com/questions/588643/generic-method-with-multiple-constraints) –
@EhsanSajjad不,請注意,我只有一個類型參數。 ( – liszt