Erklären eines verwirrenden bedingten String-Formats

8

Ein ehemaliger Kollege schrieb das:

%Vor%

Ich habe Artikel wie diese gelesen

Code Project - Benutzerdefinierte String-Formatierung in .NET
< a href="http://msdn.microsoft.com/en-us/library/0c899ak8(v=vs.110).aspx"> MSDN - Benutzerdefinierte Zahlenformatzeichenfolgen

Aber ich verstehe es immer noch nicht, wie dieses Format funktioniert. Natürlich kann ich die Ausgabe sehen, aber ich verstehe diesen Teil {0:#;;} und den zweiten nicht. Ich möchte das gleiche für die Angabe von Alter (Jahr, Jahre ...) tun.

Ich bin sehr gespannt auf dieses String-Format. Kann jemand dieses Verhalten erklären? Der Autor arbeitet nicht mehr mit uns.

    
Maximus Decimus 02.09.2014, 16:34
quelle

1 Antwort

10

Dies ist eine benutzerdefinierte numerische Format-Zeichenfolge im Grunde - aber um ehrlich zu sein, ein ziemlich seltsamer. In der Tat sind es zwei von ihnen:

%Vor%

In jedem Fall haben Sie drei Abschnitte, weil Sie zwei haben Section Separators (die Semikolons):

  

Der erste Abschnitt gilt für positive Werte, der zweite Abschnitt gilt für negative Werte und der dritte Abschnitt gilt für Nullen.

Ihre Situation wird noch komplizierter, wenn der Entwickler rows - 1 als Wert verwendet, der von der zweiten Formatzeichenfolge formatiert werden soll, also ist es wirklich:

  • records wenn rows größer als 1 ist (also rows - 1 ist positiv)
  • no records wenn rows gleich 0 ist (also rows - 1 ist negativ)
  • record wenn rows gleich 1 ist (also rows - 1 ist Null)

Und die erste Formatzeichenfolge only enthält den Wert von rows (aufgrund von # ), wenn rows positiv ist. Das Gesamtergebnis ist also:

%Vor%

Persönlich hätte ich entweder einen bedingten Operator dafür verwendet, oder wenn / else-Anweisungen - die Verwendung einer benutzerdefinierten numerischen Format-Zeichenfolge ist auf die schlechteste Weise "clever" ...

    
Jon Skeet 02.09.2014, 16:39
quelle

Tags und Links