gpt4 book ai didi

c# - 如何为所有 IEnumerable 覆盖 ToString() 方法?

转载 作者:太空狗 更新时间:2023-10-30 00:11:47 24 4
gpt4 key购买 nike

我想覆盖 ToString()IEnumerable<Int32> .

我在考虑使用扩展方法。

但是当我在下面这样做时,它仍然调用 ToString()System.Object .当我重命名我的方法时,它会调用我的方法。

因为我的扩展方法在静态类中,所以我无法覆盖。

我怎样才能做到这一点,以便我的 ToString()当我调用 .ToString() 时调用实现在 List<Int32>例如?

public static class ExtensionMethods
{
public static new string ToString(this IEnumerable<Int32> set)
{
var sb = new StringBuilder();

// Do some modifications on sb

return sb.ToString();
}
}

最佳答案

How can I achieve this so that my ToString() implementation is called when I call .ToString() on List for example?

基本上,你不能。如果找不到匹配的实例方法,使用扩展方法。

我建议您给您的方法起一个不同的名称,避免出现问题 - 以及您的方法可能导致的混淆

请注意,即使扩展方法优先于(比方说)在object 上声明的方法进行匹配,它只会对使用适当的 using 指令 - 而不是任何其他已经将调用绑定(bind)到普通指令的代码。

如果您可以提供有关您要实现的目标的更多信息,我们也许可以为您提供更多帮助 - 但目前,ToDelimitedString(或您的方法所做的任何事情)之类的东西听起来对我来说是最好的选择。

关于c# - 如何为所有 IEnumerable<Int32> 覆盖 ToString() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9697332/

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