假设我有一个按钮可以执行某些操作,并且它的OnClick事件处理程序是foo。然后我有另一个按钮,带有事件处理程序栏,设置一些额外的值,然后执行与foo相同的操作。 foo实际上并没有使用它的任何参数。处理这个问题的正确方法是什么?
选项1:
protected void foo(object sender, EventArgs e) {
//does stuff
}
protected void bar(object sender, EventArgs e)
{
//does stuff
foo(null, null);
}
用这些空值调用foo对我来说似乎很糟糕。是吗?
选项2:
protected void foo(object sender, EventArgs e)
{
func();
}
protected void bar(object sender, EventArgs e)
{
//does stuff
func();
}
让foo只是对另一个函数的调用似乎是不必要的冗长。这在语义上更清晰。
不给出foo参数似乎不是一个选项,给出了编译器错误。
我有没有更好的选择?
答案 0 :(得分:1)
我认为你必须使用你列出的两个选项中的一个。
我不认为有时候有点冗长是不好的,而选项二会给你带来一些小优势。
答案 1 :(得分:0)
在调用不需要参数的事件时,请考虑使用:
foo(this, EventArgs.Empty);
要传递不包含任何数据的对象,请使用空字段。
按照惯例,事件处理程序应始终包含一些发送者和EventArgs对象。