2017-02-06 3 views
7

Was ist falsch an meinem Code? Hier ist mein Code:C# Eingabezeichenfolge war nicht in einem korrekten Format?

public override string ToString() 
{ 
    return String.Format("Number : {0} \nFloors:{1} \nStreet \n{ \nName : {2},\nLength : {3}\n}",Number,Floors,Street.Name,Street.Length); 
} 
+0

Welche Arten von Nummer, Etagen, Street.Name und Street.Length? –

+0

Anzahl, Floors und Länge sind int Name ist String –

+2

Typ ist egal, da es sowieso keine Formatoptionen gibt. –

Antwort

19

Sie benötigen geschweiften Klammern zu entkommen:

"Number : {0} \nFloors:{1} \nStreet \n{{ \nName : {2},\nLength : {3}\n}}" 

Wenn Sie { oder } im String, müssen Sie sie als {{ und }} zu entkommen.

+0

Es funktioniert. Vielen Dank. –

+1

@ErikHakobyan Da die Antwort für Sie funktioniert, können Sie sie akzeptieren, indem Sie auf das graue Häkchen daneben klicken. Dadurch können andere Website-Besucher wissen, dass Sie eine Antwort gefunden haben, und Ihnen auf Stack Overflow ein neues Badge zuweisen. – dasblinkenlight

+0

Ich mache es. Danke. –

8

Mit C# 6 I-String-Interpolation verwenden würde:

public override string ToString() 
{ 
    return $"Number : {Number} \nFloors:{Floors} \nStreet \n{{ \nName : {Street.Name},\nLength : {Street.Length}\n}}"; 
} 

Und: wie Manfred Radlwimmer angegeben, müssen Sie die { als {{ und } als }} entkommen.

1

Wenn nicht C# 6, mit StringBuilder arbeiten.

public override string ToString() 
{ 
    StringBuilder sb = new StringBuilder(); 
    sb.Append("Number : @number \nFloors:@floors \nStreet \[email protected] : @streetLength\n"); 
    sb.Replace("@number", Number) 
     .Replace("@floors", Floors) 
     .Replace("@streetName", Street.Name) 
     .Replace("@streetLength", Street.Length); 
    return sb.ToString(); 
} 
Verwandte Themen