このコードがどのようにフォローアウト出力を生成するか説明する人は気になりますか?オプションのパラメータとメソッドオーバーライドとオプションのパラメータ
using System;
namespace ConsoleApplication1
{
class Test
{
public override string ToString() { return "ToString override"; }
public string ToString(string optional = "")
{ return String.Format("ToString with optional parameter {0}", optional); }
}
class Test2
{
public new string ToString() { return "ToString new"; }
public string ToString(string optional = "")
{ return String.Format("ToString with optional parameter {0}", optional); }
}
class Program
{
static void Main(string[] args)
{
Test one = new Test();
Test2 two = new Test2();
Console.WriteLine(one);
Console.WriteLine(one.ToString());
Console.WriteLine(one.ToString("foo"));
Console.WriteLine("--");
Console.WriteLine(two);
Console.WriteLine(two.ToString());
Console.WriteLine(two.ToString("bar"));
Console.ReadKey();
}
}
}
ToStringメソッドのオーバーライド
ToStringメソッドオプションのパラメータfooで
のToString
-
ConsoleApplication1.Test2
ます。Console.WriteLine(1)
これは
WriteLine(object)
を使用します。一般的な関心がありますように、ここでは迅速なバージョンだ、
あなたはどのラインを理解していませんか? (すべてのことについて詳しく調べるのは面倒です)。 –
基本的には、コンパイラが同じメソッドを選択するのは、同じシグネチャがあるからです。 – pneuma08
彼らは同じシグネチャを持っていません。また、*あなたが立ち往生している行を*書くと助けになります。どのくらいあなたは過負荷の解決が機能するか理解しようとしましたか?ところで、C#4.5のようなものはありません。 –