이 코드가 어떻게 다음 출력을 생성하는지 설명하는 사람이 있습니까? 선택적 매개 변수와메서드 재정의 및 선택적 매개 변수
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 (일)
이는
WriteLine(object)
를 사용합니다 : 일반적으로 흥미가 거기로, 여기에 빠른 버전입니다,
어떤 라인을 이해하지 못합니까? (그것들 모두에 대해 자세하게 설명하는 것이 지루할 것이다.) –
기본적으로 컴파일러는 서로 다른 서명을 가지고 있기 때문에 서로 다른 방법을 선택한다. – pneuma08
그들은 동일한 서명을 가지고 있지 않습니다 ... 그리고 다시 말하면, 당신이 붙어있는 줄을 말할 때 도움이 될 것입니다. 과부하 해결 방법을 이해하려고 얼마나 노력 했습니까? 그런데 C# 4.5와 같은 것은 없습니다. –