我是相当新的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