private void button1_Click(object sender, EventArgs e)
{
Button source = (Button)sender;
MessageBox.Show("The message inside the button is " + source.Text);
}
我正在学习C sharp事件处理程序的教程,我是Python用户,
public static void Main()
{
Message myMessage = new Message();
myMessage.ShowMessage += new MessageHandler(myMessage.DisplayMessage);
}
我有点知道创建一个类的新实例的基本语法,但我不明白为什么有一个括号的按钮在第一行。这两个代码有什么区别?
在c#中,每个类都继承自object
类。因为Object
是一个父类,它可以用来实例化任何子类。所以当我们收到一个object
类实例时我们希望它是Button
所以我们将它解析为Button
对象
private void button1_Click(object sender, EventArgs e)
这里sender
被指定为对象类型变量。
Button source = (Button)sender;
这里对象变量sender
被解析为Button
对象并保存在Button
类型变量
Here (Button)用于将对象发送者强制转换为按钮类型,因为您想要键入按钮。在第二个例子中,正如你所提到的,它创建了Message类的实例。
有关更多信息,请参阅
http://msdn.microsoft.com/en-IN/library/ms173105.aspx c#中的类型转换sender
是object
。为了获得按钮的Text
属性(其单击处理程序是button1_Click
),必须将sender
转换为类型为Button
的对象,以便稍后获得source.Text
。
实际上,sender
是操作所针对的控件。因为。net中的所有类型都继承了基本类型System.Object
,为了获得按钮的特定属性,必须将发送方强制转换为Button
类型的对象。