は、以下のコンソールアプリケーションを考えてみます。C#4.0デフォルトパラメータ
class Program
{
static void Main()
{
MyInterface test = new MyClass();
test.MyMethod();
Console.ReadKey();
}
}
interface MyInterface
{
void MyMethod(string myString = "I am the default value on the interface");
}
class MyClass : MyInterface
{
public void MyMethod(string myString = "I am the default value set on the implementing class")
{
Console.WriteLine(myString);
}
}
このプログラムからの出力である:
I am the default value on the interface
(1)なぜなどのパラメータを指定する方法がありません値を指定せずにインタフェース上のオプション。私はデフォルト値を実装の詳細と考えています。このコードを事前オプションのパラメータスタイルで記述した場合、インタフェースに2つのオーバーロードが作成され、実装クラスにデフォルト値が指定されます。私。我々は持っているでしょう:
我々が期待通りに出力interface MyInterface
{
void MyMethod();
void MyMethod(string myString);
}
class MyClass : MyInterface
{
public void MyMethod()
{
MyMethod("I am the default value set on the implementing class");
}
public void MyMethod(string myString)
{
Console.WriteLine(myString);
}
}
、
I am the default value set on the implementing class
(2)なぜ実装するクラスでは、デフォルト値を上書きすることはできません!
豊かな乾杯、私は問題を参照してください。インターフェイスに値を指定するのではなく、「オプションの」キーワードを追加した方が意味をなさないでしょうか?インターフェイスにデフォルト値を設定する必要はありません。 – magritte