我有两个扩展方法,它们接受两个不同的对象并比较它们的类型,如果类型相同,则返回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();