C# 访问UIControl';通过sender参数与直接访问变量来访问属性

C# 访问UIControl';通过sender参数与直接访问变量来访问属性,c#,xamarin,sender,C#,Xamarin,Sender,假设我有一个UISegmentedControl var segmentControl = new UISegmentedControl(); 对于这样一个简单的用例,在ValueChanged事件中,我应该通过sender参数访问segmentControl的属性,而不是直接访问我创建的变量,这有什么原因吗?显然,如果我以其他方式设置事件,而我无法访问变量,我将被迫使用发送者 segmentControl.ValueChanged += (sender, e) => { //

假设我有一个UISegmentedControl

var segmentControl = new UISegmentedControl();
对于这样一个简单的用例,在ValueChanged事件中,我应该通过sender参数访问segmentControl的属性,而不是直接访问我创建的变量,这有什么原因吗?显然,如果我以其他方式设置事件,而我无法访问变量,我将被迫使用发送者

segmentControl.ValueChanged += (sender, e) => {
    // Are there any pros to doing this
    var selectedSegmentId = (sender as UISegmentedControl).SelectedSegment;
};
vs


如果不打算将此处理程序绑定到几个控件,则可以直接访问它。使用sender,您可以创建更多的通用事件处理程序。好吧,那么在这样一个简单的情况下直接访问它没有什么错吗?这是错误的,因为如果您在未注销事件的情况下删除此UISegmentControl,您可能会有编译错误,但这不是一个大问题。由于这是一个非常简单的案例,您可以毫无疑问地完成它。第一个案例更一般,您可以将其设置为全局
EventHandler
,在我看来,这是正确的方法,而后一个仅适用于此控件,不适用于其他控件。谢谢各位。
segmentControl.ValueChanged += (sender, e) => {
    // vs this?  
    var selectedSegmentId = segmentControl.SelectedSegment;
};