我是相當新的C#從Java來了,我想知道如果有一個簡單的方法來避免代碼重複,涉及原始類型是這樣的:C#泛型避免代碼重複?
private Boolean AtLeastOneBufferItemIsNonZero(int[] Buffer)
{
Boolean result = false;
foreach (int Item in Buffer)
{
result = !(Item == (int)0);
if (result) break;
}
return result;
}
private Boolean AtLeastOneBufferItemIsNonZero(float[] Buffer)
{
Boolean result = false;
foreach (float Item in Buffer)
{
result = !(Item == (float)0);
if (result) break;
}
return result;
}
我無法找到一個「號碼」超這樣我可以在一個泛型實現比較「項目」(我不介意拳擊的性能損失,但據我所知,在.NET中有沒有這樣的事?):
//SOMETHING LIKE THIS?
private Boolean AtLeastOneBufferItemIsNonZero<T>(T[] Buffer) where T : NUMBERTYPE
{
Boolean result = false;
foreach (T Item in Buffer)
{
result = !(Item.Equals(0)); //Nope....
if (result) break;
}
return result;
}
是對的唯一途徑創建我自己的數字實現並有一個compare()方法?這聽起來像是矯枉過正不是嗎?
有一些類似的問題。檢查他們是否幫助你。的例子夫婦:http://stackoverflow.com/questions/3329576/generic-constraint-to-match-numeric-types http://stackoverflow.com/questions/802024/struggling-to-come-up-with-a -generic-C-方法 - 即 - 比較 - 不同類型-的正 – Carlos 2010-09-23 19:58:11
在一個側面說明,使用'bool'代替'Boolean'。布爾是一個捷徑。 – GenericTypeTea 2010-09-23 20:00:40