我可以安全地从网页事件处理程序中删除未使用的参数,为什么Page_Load中的参数未被使用?

时间:2016-12-15 10:51:35

标签: c# asp.net visual-studio suppress-warnings

为了成为一个整洁的程序员,我尝试修复构建警告。但是我对页面事件处理程序中未使用的参数的警告感到困惑。例如:

public partial class MyPage : System.Web.UI.Page
{
    protected void Page_PreInit(object sender, EventArgs e)
    {
        some code not referencing sender or e
    }

如果我按照VisualStudio的建议并删除未使用的参数sendere,我会改变方法签名,代码可能无法正常工作。但是,根据this microsoft help page,事件处理程序的签名不会查看参数。该页面的语言让我感到困惑,使用了像breaking这样的行话,但在这种情况下,我想删除未使用的参数确实是安全的。

但是下一个事件处理程序如何,也没有使用参数,但VisualStudio不会发出相同的警告:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack && !IsCallback)
        InitPagina();
    return;
}

我的问题是:

  • 这些参数是否真的未使用且不需要?
  • 帮助页面中的术语breaking是什么意思?
  • Page_PreInit和Page_Load的事件处理程序类型有什么不同?
  • 如帮助页面所述,未使用的参数确实会产生维护和性能成本吗?
  • 抑制未使用参数警告应该是最佳做法吗?

2 个答案:

答案 0 :(得分:0)

我不是百分百肯定。但我认为如果删除参数,该函数可能不再被调用。由于预期的签名发生了变化。

答案 1 :(得分:0)

按顺序回答我自己的问题:

  • 以后可能需要这些参数,因此并非“不需要”(请参阅​​Michael Gorsich的评论)
  • 如果他们谈论像“不需要”这样有争议的事情,那么像breaking这样的微软术语的含义并不重要。我会提出像unneeded build warnings
  • 这样的新术语
  • 两个事件处理程序的相似之处在于它们可以接收相同数量和类型的参数,这只是VisualStudio(或DevExpress CodeRush ??)的奇怪行为
  • 未使用的参数不会产生维护和性能成本,相反,删除这些参数可能会在以后需要时产生成本并且开发人员必须“知道”可以将其添加回来
  • 我现在正在研究如何配置VS以禁止有关未使用参数的所有警告