考慮以下控制檯應用程序: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)爲什麼沒有指定參數作爲的方式在沒有提供值的情況下在接口上可選。我認爲默認值是實現細節。如果我們使用預選參數樣式編寫代碼,我們將在接口中創建兩個重載,並且默認值將在實現類中指定。即我們將有:
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)我們爲什麼不能在實現類覆蓋默認值!
Cheers Rich,我看到了問題。對於他們添加一個「可選」關鍵字而不是在界面上提供一個值是否更有意義?我不得不在界面上設置默認值。 – magritte