2015-12-04 11 views
15

In C# kann ich Doubles in Floats umwandeln durch einen Cast (float) oder Convert.ToSingle().Convert Double in Float von Cast oder Convert.ToSingle()?

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

a und b gleich werden.

Gibt es Unterschiede zwischen beiden Techniken? Welchen sollte ich bevorzugen und warum?

Antwort

22

Vom .NET reference source:

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

Also, Ihre Antwort ist, dass sie genau die gleichen sind, unter der Haube.

Jede Präferenz zwischen den beiden ist streng eine persönliche Stilwahl. Persönlich würde ich die Besetzung immer verwenden, da sie kürzer ist und mir einfach mehr idiomatisch erscheint.

+1

Da es scheinbar keinen Grund gibt, ToSingle zu verwenden, ist es keine persönliche Entscheidung, sondern objektiv besser, einen Cast zu verwenden. – usr

+3

Die 'Convert'-Klasse soll die sprachneutrale Konvertierung zwischen den verschiedenen Basistypen von .NET Framework sein. Nicht alle Sprachen, die auf .NET laufen, haben tatsächlich einen Cast-Operator wie C#. Zum Beispiel: In VB.NET haben Sie CType(), CDbl(), DirectCast() und implizite Konvertierung, von denen keiner genau die gleiche Semantik wie der Darstellungsoperator in C# hat. –