栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

当传递空值时,方法重载解决方案系统如何确定要调用哪个方法?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

当传递空值时,方法重载解决方案系统如何确定要调用哪个方法?

有关确切规则,请参阅重载分辨率规范。但是简单地说,它是这样的。

首先,列出所有 可访问的 构造函数。

public EffectOptions ( params object [ ] options )public EffectOptions ( IEnumerable<object> options ) public EffectOptions ( string name )public EffectOptions ( object owner ) public EffectOptions ( int count ) public EffectOptions ( Point point )

接下来,消除所有 不适用的
构造函数。适用的构造函数是每个形式参数都有对应参数的构造函数,该参数可隐式转换为形式参数类型。假设Point是一个值类型,我们将删除“ int”和“
Point”版本。那离开

public EffectOptions ( params object[] options )public EffectOptions ( IEnumerable<object> options ) public EffectOptions ( string name )public EffectOptions ( object owner )

现在,我们必须考虑带有“ params”的参数是适用于其 展开 形式还是 展开
形式。在这种情况下,这两种形式都适用。发生这种情况时,我们将放弃 展开的 表格。这样就离开

public EffectOptions ( object[] options )public EffectOptions ( IEnumerable<object> options ) public EffectOptions ( string name )public EffectOptions ( object owner )

现在,我们必须确定 合适的候选人。最佳规则很复杂,但是简短的规则是, 更具体胜于更具体
。长颈鹿比哺乳动物更具体,哺乳动物比动物更具体,动物比物体更具体。

object
版本比所有版本都不太具体,因此可以删除。该
IEnumerable<object>
版本不如该版本特定
object[]
(您知道为什么吗?),因此也可以将其删除。那离开

public EffectOptions ( object[] options )public EffectOptions ( string name )

现在我们陷入困境。

object[]
既不比也不具体
string
。因此,这产生了歧义错误。

那只是一个简短的草图;真正的平局决胜法要复杂得多。但这是基础。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/395397.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号