C # Generics, чтобы избежать повторения кода?

Я новичок в C #, пришедшем из Java, и мне интересно, есть ли простой способ чтобы избежать повторения кода, включающего такие примитивные типы, как этот:


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;
}

Я не могу найти супертип "Number", чтобы я мог сравнить "Item" в реализации универсальных шаблонов (я бы не возражал против потери производительности бокса, хотя я понимаю что в .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;
}

Это единственный способ создать мою собственную реализацию Number и использовать метод compare ()? Звучит как излишество, не так ли?

5
задан Mastermnd 24 September 2010 в 09:52
поделиться