c# - C#中重载函数的执行顺序

标签 c# execution overloading

只是想知道 C# 如何确定方法重载中对象的执行顺序 例如我有一个方法

bool SomeMethod(IQueryable source)
{
  //.... Do Work
}

bool SomeMethod(IEnumerable source)
{
   //.... Do Work
}

var Obj = Db.Table.Where(ID > 5);

SomeMethod(Obj);

当我运行此代码时,代码转到 IQueryable 重载,现在是因为我首先声明了 IQueryable,是因为 IQueryable 是 IEnumerable 类型还是有其他一些潜在原因?

-谢谢

最佳答案

有一个更好的算法(C# 规范的第 7.4.3 节)用于在存在多个适用重载的情况下决定使用哪个方法重载。在这种情况下,IQueryable 可以隐式转换为 IEnumerable,但是 IEnumerable 不能隐式转换为 IQueryable ,使 IQueryable 成为“更好的”重载。

另见
7.4.2.3 Better conversion

关于c# - C#中重载函数的执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26495698/

相关文章:

c++ - 如何使用我的用户定义类型正确重载 operator< 以便在 std::map 中使用?

c# - 推荐哪种方法 : aggregateRoot. Items.Add(...) or aggregateRoot.AddItem(...)

c# - HttpClient 证书错误

c# - 当 CPU 使用率在一段时间内超过限制时发出警报

time - 用于记录 Junit5 中每个测试用例执行时间的注释

Java方法重载和调用

Java方法调用重载逻辑

c# - 使用抽象类型的反射从表中获取实体

Java - 如何执行一个进程

php - 响应在 PHP 命令行上运行的程序提出的问题