2016-07-28 18 views
-2

Nun, dieses Programm hat Fehler in der ersten Zeile kompilieren, der Zeichenfolgenkonstruktor kann kein String-Literal akzeptieren, während die zweite Zeile OK kompiliert. SoC#: Warum String kann nicht mit einem String-Literal als Parameter erstellt werden?

was ist der Unterschied zwischen der Linie 1 und Linie 2, ich nehme an, sie beide Konstrukteure sind, warum 1. Zeile hat Übersetzungsfehler?

+1

Nun, es ist kein passender Konstruktor: https://msdn.microsoft.com/en- us/library/system.string.aspx '" Ich nehme an, sie sind beide Konstruktoren "' - Nein, nur die erste Zeile verwendet einen Konstruktor. Die zweite Zeile weist einfach einen Wert zu. – David

+2

Da Sie offensichtlich Dokumentation gelesen haben, bevor die Frage zu stellen und festgestellt, dass kein passender Konstruktor ist ... Bitte klären, was genau sind Sie als Antwort suchen? Historische Informationen, warum es so gemacht wurde? Etwas anderes? –

Antwort

0

C# Zeichenfolgenkonstruktor nur diese Argumente akzeptieren Zeichenfolge, die nicht einer von ihnen:

unsafe public String(char*); 
     public String(char[]); 
unsafe public String(sbyte*); 
     public String(char, int); 
unsafe public String(char*, int, int); 
     public String(char[], int, int); 
unsafe public String(sbyte*, int, int); 
unsafe public String(sbyte*, int, int, Encoding); 

http://www.dotnetperls.com/string-constructor