请教C#语法: Button senderButton = sender as Button;

zohar871 2014-04-26 12:44:21
自从CSDN账户被黑后,第一次登录,密码没有被改,居然发现好多垃圾博客记录,唉~~~

请今天开始请教问题(好多问题),继续学习ASP.NET:
来自一个ASP.NET的培训视频,这里是语句:
Button senderButton = sender as Button;
不太理解这个AS的意思,只知道定义SENDERBUTTON作为一个BUTTON对象

完整的程序段:

protected void TheButton_Click(object sender, EventArgs e)
{
Button senderButton = sender as Button;

string yearMessage = string.Empty;
if (senderButton.CommandName == "ThisYearCommand")
{
yearMessage = "this year";
}
else if (senderButton.CommandName == "LastYearCommand")
{
yearMessage = "last year";
}

ResultLabel.Text += string.Format("Countries visited by {0} {1}: <br/>", NameTextBox.Text, yearMessage);

foreach (ListItem item in CountryList.Items)
{
if (item.Selected)
{
ResultLabel.Text += "* " + item.Value + "<br/>";
}
}
ResultLabel.Text += "<br/>";
}


程序的作用是两个按钮共用一个CLICK事件,根据不同按钮的COMMANDNAME属性决定执行那个判断,sender这里表示触发事件的对象,BUTTON,
问题:
为什么不直接用sender来写判断:senderButton.CommandName == "ThisYearCommand",修改为sender.CommandName ... ?
Button senderButton = sender as Button; 与Button sendButton = (Button)sender; 是不是同等的命令?
谢谢兄弟们的帮助:)
...全文
1497 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
iyomumx 2014-04-26
  • 打赏
  • 举报
回复
as(C# 参考) 类似强制转换但不会执行用户定义转换,转换失败会得到null sender是object类型,不包含CommandName的定义,故sender.CommandName会引发编译错误
zohar871 2014-04-26
  • 打赏
  • 举报
回复
谢谢两位弟兄,非常清楚了,继续学习 ×××××××××××××××××××××××××××××××××××××× 那些出于你的人必修造久已荒废之处; 你要建立拆毁累代的根基。 你必称为补破口的, 和重修路径与人居住的。
threenewbee 2014-04-26
  • 打赏
  • 举报
回复
as字面意思是视为 Button b = sender; //这会导致错误 因为sender是object类型 as 相当于强制类型转换: Button b = (Button)sender; 这样也可以。 但是两者的不同是,as在遇到不能转换的时候,返回null,而强制转换丢出异常,比如 int i = 1; Button b = (Button)i; //丢出异常 Button b1 = i as Button; //不丢出异常,但是b1 = null

62,075

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧