Ich habe ein Verfahren, das in einem Doppel Referenz nimmt und gibt eine Zeichenfolge, während auch den Wert der Referenz modifizierende:Zuweisen Referenzen Werte innerhalb string.Format()
const long OneKb = 1024;
const long OneMb = OneKb * 1024;
const long OneGb = OneMb * 1024;
const long OneTb = OneGb * 1024;
public string GetLargestDataSizeAndUnitOfMeasurement(ref double value, int decimalPlaces = 0)
{
var asTb = Math.Round(value/OneTb, decimalPlaces);
var asGb = Math.Round(value/OneGb, decimalPlaces);
var asMb = Math.Round(value/OneMb, decimalPlaces);
var asKb = Math.Round(value/OneKb, decimalPlaces);
string unit = asTb > 1 ? string.Format("Tb", value = asTb)
: asGb > 1 ? string.Format("Gb", value = asGb)
: asMb > 1 ? string.Format("Mb", value = asMb)
: asKb > 1 ? string.Format("Kb", value = asKb)
: string.Format("B", value = Math.Round(value, decimalPlaces));
return unit;
}
Meine Frage ist, ob es annehmbar Weisen Sie der Referenz einen neuen Wert innerhalb der string.Format()
zu, obwohl der Wert für diese Methode nicht relevant ist. Ich könnte die if
separat ausführen, um value
zu ändern, wenn ich dies vermeiden wollte, aber dies scheint sauberer und potenziell effizienter im Maßstab.
'string.Format (" Tb ", Wert = asTb)' dies wird "Tb" zurückgeben. Warum verwenden Sie überhaupt Format? Und das sieht nicht sauberer aus. Es ist hässlich und verwirrend. –
@GiorgiNakeuri das ist meine Frage, die 'string.Format()' erlaubt mir, die Referenz inline zu aktualisieren, während auch die Zeichenfolge, die ich brauche. Ich will nur wissen, ob das verpönt ist oder nicht, und warum. –
Zuweisung ist ein ** gültiger ** C# Ausdruck, und da Sie ein ** gültiges ** C# Konstrukt verwenden, warum sollte es nicht akzeptabel sein? –