类型转换发件人与使用对象的ID

时间:2015-07-27 15:25:34

标签: c# events

如果是已知对象,最好通过ID引用对象或将发送者强制转换为对象类型吗?

<asp:Button runat="server" ID="customBTN" OnClick="customBTN_Click" Text="Click Me" />

按ID:

protected void customBTN_Click(object sender, EventArgs e)
{
    customBTN.Text = "Clicked.";
}

VS

型铸造:

protected void customBTN_Click(object sender, EventArgs e)
{
    (sender as Button).Text = "Clicked.";
}

我假设通过ID引用可能更好,因为不涉及演员,但是想知道在事件处理中使用发送者对象是否可能是更好的做法。

2 个答案:

答案 0 :(得分:2)

您的假设是正确的,ID的引用更好。

原因不是因为它不涉及强制转换,而是在您引用控件名称时更容易理解,并且它清楚地表明您只能使用特定按钮。

如果这是一种通用的,可以考虑进行投射,并且可以绑定到多个按钮。

答案 1 :(得分:1)

考虑这一点(但不太可能 - 但可能会发生):

<asp:Button runat="server" ID="customBTN" OnClick="customBTN_Click" Text="Click Me" />
<asp:Button runat="server" ID="custom1BTN" OnClick="customBTN_Click" Text="Click Me" />
<asp:Button runat="server" ID="custom2BTN" OnClick="customBTN_Click" Text="Click Me" />

订阅相同事件的许多按钮 - 您的第二个示例将更改按钮的文本而不知道单击了哪个按钮,而第一个示例是明确的并清楚您的意图是什么。

除此之外,在你的第二个例子中,你需要一种方法来区分实际按下了哪个按钮,这样你就可以(sender as Control).ID获取ID值并对这个值执行一些逻辑。