2013-11-25 57 views
0

我有以下几点:如果没有提供可选参数,它不应该使用默认值吗?

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

如果我打电话

MyMethod(myclassA); 

不应useWhite是真的里面的MyMethod的()?我发现在上述情况下,这是错误的。

+3

它_is_真实的,所以显示的代码是可再现的。 http://ideone.com/YwsQ64 –

+0

你可以发布一个可编译的例子吗? –

+1

是否有可能你有一个名为'useWhite'的字段被初始化为false? –

回答

2

确实,原因可能是您的类实现了一个接口,并且该接口为该参数定义了一个不同的默认值,例如, useWhite = 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" 
} 
+0

谢谢。情况并非如此。 – 4thSpace

+0

@ 4thSpace除非您提供演示此问题的实际代码,否则猜测就是您将要获得的。 – svick

相关问题