如果没有提供可选参数,是否应该使用默认值?

时间:2013-11-25 23:18:55

标签: .net c#-4.0

我有以下内容:

void MyMethod(ClassA classa, bool useWhite=true)
{...}

如果我打电话

MyMethod(myclassA);

不应该在MyMethod()内部使用白色?我发现在上述情况下,这是错误的。

1 个答案:

答案 0 :(得分:2)

实际上,原因可能是您的类实现了一个接口,并且接口为参数定义了一个不同的默认值,例如: useWhite = false

以下示例将输出“False”:

public interface I
{
    void Test(bool b = false);
}
public class C : I
{
    public void Test(bool b = true)
    {
        Console.WriteLine(b);
    }
}

void Main()
{
    I i = new C();
    i.Test();       // <-- prints "False"
    new C().Test(); // <-- prints "True"
}