私は C# 4.0 に関するプレゼンテーションを行っていましたが、最後にプレゼンターが次のコードでクイズを投稿しました。
using System;
class Base {
public virtual void Foo(int x = 4, int y = 5) {
Console.WriteLine("B x:{0}, y:{1}", x, y);
}
}
class Derived : Base {
public override void Foo(int y = 4, int x = 5) {
Console.WriteLine("D x:{0}, y:{1}", x, y);
}
}
class Program {
static void Main(string[] args) {
Base b = new Derived();
b.Foo(y:1,x:0);
}
}
// The output is
// D x:1, y:0
その出力が生成される理由がわかりませんでした (プレゼンターなしでプレゼンテーションをオフラインで読む際の問題)。私は期待していました
D x:0, y:1
答えを見つけるためにネットを検索しましたが、まだ見つかりませんでした。誰かがこれを説明できますか?