Cast spécifié invalide C#
Bonjour,
J'ai une classe vector générique, j'ai écris une fonction retournant la norme du vector courant, voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
/// <summary>
/// Computes the Euclidien norm of the vector
/// </summary>
/// <param name="dimension"> the dimension of the vector (unused in this function) </param>
/// <returns> returns the norm of the vector </returns>
public TField Norm(int dimension)
{
var type = typeof(TField);
if (type == typeof(double))
{
double sum_square = 0.0;
foreach (TField val in this.vectorObject)
{
var double_value = (double)(object)val;
sum_square += (double_value * double_value);
}
return (TField)(object)(Math.Sqrt(sum_square));
}
else if (type == typeof(float))
{
float sum_square = 0.0f;
foreach (TField val in this.vectorObject)
{
var float_value = (float)(object)val;
sum_square += (float_value * float_value);
}
double len = Math.Sqrt((double)sum_square);
return (TField)(object)(len);
}
else
{
throw new InvalidOperationException(/*string.Format(InterfaceGraphique.Properties.Resources.MessageGenericArithmeticNotDefined, type.Name)*/);
}
} |
tout fonctionne quand j'alloue un vector de double, mais quand j'alloue un vector de float et que je lui demande de me retourner sa norme, il me dit qu'il y a un cast invalide à la ligne return (TField)(object)(len); (dans la condition if (type == typeof (float)))
je ne comprends pas pourquoi un float ne peut pas être convertit en object?
Merci
Algernon