2017-07-21 1 views
-7

Making eine Mod für ein Spiel, und ich versuche, den Namen des Charakters immer zu bekommen, wenn es hervorkommt, Matt.Keine Überladung für die Methode 'ToString' dauert 1 Argument

Allerdings ging das nicht gut für mich. Trotz der zahlreichen Probleme, die ich von mir selbst fixiert, kann ich nicht einen Weg, um diesen Fehler finden:

No overload for method 'ToString' takes 1 argument

Hier ist der Code:

switch (WorldGen.genRand.Next(0)) 
{ 
    case 0: 
     return ToString("Matt"); 
} 
+4

Der Standard 'ToString()' 'von object' nicht Überlastungen haben. Sie müssen nur "Matt" zurückgeben. –

+0

ToString benötigt einen Typ, der in einen String konvertiert werden soll, wie 'int.ToString()' – Ben

+0

Es gibt keinen solchen 'int.ToString()' direkt. Es sollte 'Convert.ToString (intvariable)' oder 'intvariable.ToString()' lauten. Da die Konvertierung von "Zeichenfolge" zu "Bool" ungültig ist, überprüfen Sie, welchen Typ die Methode zurückgibt. –

Antwort

1

ToString ein virtual Methode der Object Klasse ist. mit dem man einen Typ in einen String umwandeln kann. Die Art und Weise, wie Sie versucht haben zu verwenden, ist nicht korrekt. Ändern Sie Ihren Code in diesen. Auch das "Matt" ist bereits im String-Format, so dass Sie das nicht konvertieren müssen. Wenn Ihre Methode String-Typ gibt, dann sollten Sie verwenden

switch (WorldGen.genRand.Next(0)) 
{ 
    case 0: 
     return "Matt"; 
} 

Dank

+2

Wenn Sie auch erklären würden, warum dies hilft, wäre Ihre Antwort für OP besser geeignet. –

0

No overload for method 'ToString' takes 1 argument

Die Botschaft ist klar in die besagt, dass ToString nehmen keine Argumente. Wahrscheinlich versuchen Sie etwas Ähnliches wie dieses (Bitte beachten Sie die Kommentare im Code unten) zu tun: über

using System; 

public class Program 
{ 
    public static void Main() 
    { 
     var sc = new SomeClass(); 
     sc.ToString(); // works 
     // does not work because SomeClass does not have a ToString method 
     /// which takes one parameter 
     sc.ToString("whatever"); 
    } 
} 

public class SomeClass 
{ 
} 

Im Code SomeClass kein ToString Verfahren haben aber standardmäßig alle Klassen leiten die Object Klasse, die hat eine ToString() Methode. Daher wird das Aufrufen von ToString() (ohne Argumente) funktionieren, da diese Methode von Object geerbt wird. Der Aufruf von ToString("WithArgument") funktioniert jedoch nicht und führt zu der Ausnahme, die Sie erhalten. Wenn Sie nur Matt oder eine andere Zeichenfolge zurückgeben möchten, einfach tun:

return "Matt"; // or anything else 
Verwandte Themen