为什么选择两个重载方法之一执行?

时间:2019-06-25 19:44:50

标签: c# overloading extension-methods

我有两个扩展方法,它们接受两个不同的对象并比较它们的类型,如果类型相同,则返回true,如果类型不同,则返回false

但是,在第二种方法中,我还有一个可选的string参数,默认为null

所以我的问题是:我的程序如何知道要调用的两种方法中的哪一种?在我看来,这两种方法都是相同的,因为包含可选参数使我觉得这两种方法是相同的。

public static bool TypeEquals<TOne, TTwo>(this TOne one, TTwo two)
{
    return typeof(TOne) == typeof(TTwo);
}

public static bool TypeEquals<TOne, TTwo>(this TOne one, TTwo two, string nulls = null)
{
    return typeof(TOne) == typeof(TTwo);
}

每次运行以下代码时,都会调用上述两个方法中的第一个,而不会调用第二个。

string one = null, two = "two";
bool typeEquals = one.TypeEquals(two);
Console.WriteLine(typeEquals);
Console.ReadLine();

0 个答案:

没有答案