【发布时间】:2013-05-08 22:47:26
【问题描述】:
我有一些执行日志记录的 C# 应用程序,Output 方法有一个重载来接受消息和一个 StreamWriter,另一个重载带有一个用于 params 数组的附加参数。方法签名的一个例子是:
private static void Output(string message, StreamWriter writer, params object[] args)
{..}
private static void Output(string message, StreamWriter writer)
{..}
问题涉及 Resharper,它为这些方法提供以下警告:“具有可选参数的方法被重载隐藏”。
该警告具有误导性,因为我从 3 参数重载内部调用 2 参数重载并且它不会导致递归调用,因此不会隐藏重载。
我在 Resharper 网站上进行了一些研究,并且有一些关于这个问题的票已被关闭,因为“无法修复”。
在我看来,这是一个有效的用例,因为运行时知道要调用哪个重载。 .NET 框架中也有使用此类重载的示例。
例如,StreamWriter.WriteLine() 具有要写入的值的重载,还有 Format params。
这是一个有效的参数,还是应该将我的方法重命名为“OutputFormat”,因为他们在幕后使用 string.Format 来构建具有指定参数的字符串?
【问题讨论】:
标签: .net resharper overloading string.format resharper-7.1