2015-12-04 19 views
15

In C# posso convertire i duplicati in float con un cast (float) o Convert.ToSingle().Converti double in float per cast o Convert.ToSingle()?

double x = 3.141592653589793238463; 
float a = (float)x; 
float b = Convert.ToSingle(x); 

a e b diventano uguali.

Esistono differenze tra le due tecniche? Quale dovrei preferire e perché?

risposta

22

Dal .NET reference source:

public static float ToSingle(double value) 
{ 
    return (float)value; 
} 

Quindi, la risposta è che sono esattamente gli stessi, sotto il cofano.

Qualsiasi preferenza tra i due è strettamente una scelta di stile personale. Personalmente, userei sempre il cast perché è più corto e mi sembra più idiomatico.

+1

Poiché non sembra esserci alcuna ragione per utilizzare ToSingle, non è una scelta personale, ma è obiettivamente meglio utilizzare un cast. – usr

+3

La classe 'Convert' è intesa come il modo neutrale per la conversione tra i diversi tipi di base di .NET Framework. Non tutte le lingue eseguite su .NET hanno in realtà un operatore di cast come C#. Ad esempio: in VB.NET si ha CType(), CDbl(), DirectCast() e conversione implicita, nessuno dei quali ha la stessa semantica esatta dell'operatore di cast in C#. –