I'm trying to make a method that returns the highest value of an Array
with generic elements that can be Nullable
.
public T Greatest<T>(T?[] array) where T : struct, IComparable<T>
{
T? Greater = null;
foreach (var elem in array)
{
if(elem.HasValue)
{
if(Greater.HasValue)
{
if(Greater.Value.CompareTo(elem.Value) < 0)
{
Greater = elem;
}
}
else
{
Greater = elem;
}
}
}
//Problem here: What is the best way to return the greatest value?
// ****
return Greater.Value; // Possible InvalidOperationException
// ****
}
What is the proper way to return the value?