gpt4 book ai didi

c# - 默认参数和覆盖

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:11 25 4
gpt4 key购买 nike

我想知道为什么以下内容在 VS2010 (.NET 4) 中被标记为错误,找不到合适的方法来覆盖:

public override string ToString(int foo=0) {
// some stuff
}

我找到了 this这看起来有点相似(至少还有可选参数的令人惊讶的行为),但我不明白为什么这个方法不覆盖 ToString()

现在我显然知道如何通过重载 ToString 轻松解决这个问题,所以我对该问题的解决方案感兴趣,但对这个限制背后的基本原理感兴趣。

最佳答案

它根本没有相同的签名。覆盖方法仅限于与它们覆盖的方法严格相同的签名,可选参数不仅仅是用于重载的语法糖;它们也是方法签名的一部分,甚至是生成的 IL 代码的一部分。

这个:

public virtual string ToString();

与此不同:

public override string ToString(int foo = 0);

不管你怎么切。所以,错误。

关于c# - 默认参数和覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9985990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com