Soy bastante nuevo en C# procedente de Java, y me pregunto si hay una forma sencilla de evitar la repetición de códigos que implica tipos primitivos como esto:C# ¿Genéricos para evitar la repetición del código?
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;
}
no puedo encontrar un supertipo "Número", por lo que puedo comparar "artículo" en una aplicación genéricos (no me importaría la penalización en el rendimiento del boxeo, aunque entiendo que en .NET no hay tal cosa?):
//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;
}
es la única manera de crear mi propia implementación de Number y tener un método compare()? Eso suena a excesivo ¿no?
Hay algunas preguntas similares. Verifica si te ayudan. Un par de ejemplos: http://stackoverflow.com/questions/3329576/generic-constraint-to-match-numeric-types http://stackoverflow.com/questions/802024/struggling-to-come-up-with-a -generic-c-method-that-compare-different-types-of-n – Carlos
En una nota al margen, use 'bool' en lugar de' Boolean'. bool es un atajo. – GenericTypeTea