2017-07-21 45 views
-7

ゲーム用のMODを作成していて、いつもキャラクターの名前を取得しようとしています。メソッド 'ToString'のオーバーロードが1つの引数を取る

しかし、これは私にとってうまくいきませんでした。私は自分自身で固定無数の問題にもかかわらず、私はこのエラーを回避する方法を見つけることができません。ここで

No overload for method 'ToString' takes 1 argument

は、コードは次のとおりです。

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

デフォルトの 'ToStringメソッド()' object'が過負荷を持っていない 'から。マットを返すだけです。 –

+0

ToStringには 'int.ToString()'のように文字列に変換する型が必要です – Ben

+0

'int.ToString()'はありません。 'Convert.ToString(intvariable)'または 'intvariable.ToString()'でなければなりません。 'string'から' bool'への変換が無効になったので、あなたのメソッドが返す型を確認してください。 –

答えて

1

ToStringObjectクラスのvirtual方法です。型を文字列に変換するために使用することができます。だからあなたが使ってみたやり方は正しいわけではありません。コードをこれに変更します。また、 "Matt"はすでに文字列形式になっているので、変換する必要はありません。あなたのメソッドは文字列型を返すなら、あなたは

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

おかげ

+2

これがなぜ役立つのか説明してもらえば、あなたの答えはOPにとってより価値があります。 –

0

No overload for method 'ToString' takes 1 argument

メッセージがToStringは引数を取らないことを示すで明らかであるを使用する必要があります。おそらく(以下コード内のコメントに注意してください)これに似た何かをしようとしている。

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 
{ 
} 

上記のコードでは、SomeClassToStringメソッドを持っていませんが、デフォルトではすべてのクラスがありObjectクラスを派生しますToString()方法。したがって、ToString()(引数なし)を呼び出すと、そのメソッドはObjectから継承されるため、機能します。ただし、ToString("WithArgument")を呼び出すと機能しなくなり、結果として例外が発生します。あなただけMattまたは他の文字列を返すようにしたい場合は、単純に次の操作を行います。

return "Matt"; // or anything else 
関連する問題