Я новичок в 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 ()? Звучит как излишество, не так ли?