以下代码导致编译器错误,因为它是不明确的调用,但问题是如果我们使用object而不是ArrayList没有错误发生,string版本工作正常; 你对此有解释吗?
class A
{
public A(string x)
{
Console.WriteLine("string");
}
public A(ArrayList x)
{
Console.WriteLine("ArrayList");
}
}
static void Main(string[] args)
{
A o = new A(null);
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*Tao 16
如果更改需要一个构造函数的代码工作正常的原因ArrayList采取的object是C#编译器将挑选最具体类型适用.在string/ 的情况下object,string实际上派生自object并因此"更具体"并且将由编译器推断.与string对比ArrayList,它是苹果和橘子:要么可以为空,但两者都不比另一个更具"特异性".
| 归档时间: |
|
| 查看次数: |
2130 次 |
| 最近记录: |