Complex.ToString-format har ändrats till <a; b>
För att bättre stödja formateringsvärden med kulturspecifik information ändrades standardsträngrepresentationen av komplexa tal för att undvika att använda tecken som kan användas i formaterade numeriska värden. Den här ändringen påverkar Complex.ToString, där värdet nu är formaterat som <a; b>
i stället för (a, b)
. Både a och b formateras med hjälp av den allmänna formatspecificeraren ("G") och konventionerna i den kultur som definieras av providern – detta har inte ändrats.
Tidigare beteende
Tidigare visade strängrepresentationen av det komplexa tal som returnerades av talet med hjälp av Complex.ToString dess kartesiska koordinater i formuläret (a, b)
, där en var den verkliga delen av det komplexa talet och b var dess imaginära del.
Nytt beteende
Från och med .NET 8 visar strängrepresentationen av det komplexa tal som returneras av talet med hjälp av Complex.ToString dess kartesiska koordinater i formuläret <a; b>
, där en är den verkliga delen av det komplexa talet, och b är dess imaginära del.
Version introducerad
.NET 8
Typ av icke-bakåtkompatibel ändring
Den här ändringen är en beteendeförändring.
Orsak till ändringen
Ändringen för att använda ett semikolon möjliggör stöd för formatering med kulturspecifik information. Det gör också att motsvarande behov kan parsa ut resultaten med tanke på att det implementerar INumberBase<TSelf>.
Ändringen från parenteser (( )
) till vinkelparenteser undviker potentiell kollision med numeriska format där negativa tal formateras som (x)
. Det nya beteendet överensstämmer också med beteendet för typerna Vector*
.
Rekommenderad åtgärd
Om du behöver föregående format kan du använda en anpassad strängformateringsmekanism, till exempel $"({complex.Real}, {complex.Imaginary})"
för att skapa en sträng i det formatet.