Мы только что нашли их в нашем коде:
public static class ObjectContextExtensions
{
public static T Find<T>(this ObjectSet<T> set, int id, params Expression<Func<T, object>>[] includes) where T : class
{
...
}
public static T Find<T>(this ObjectSet<T> set, int id, params string[] includes) where T : class
{
...
}
}
Как вы можете видеть, они имеют одну и ту же подпись, кроме params
.
И они используются несколькими способами, один из них:
DBContext.Users.Find(userid.Value); //userid being an int? (Nullable<int>)
который, как ни странно, для меня, разрешает первую перегрузку.
Q1: Почему это не приводит к ошибке компиляции?
Q2: Почему компилятор С# разрешает вышеупомянутый вызов первому методу?
Изменить. Просто уточнить, это С# 4.0,.Net 4.0, Visual Studio 2010.