发件人在 C# 中

Saj*_*jad -6 c# windows xaml

private void RectangleTapped(object sender, TappedRoutedEventArgs e)
{
     RedRectangle.Fill.Opacity = 1.0;
     GreenRectangle.Fill.Opacity = 1.0;
     BlueRectangle.Fill.Opacity = 1.0;
     YellowRectangle.Fill.Opacity = 1.0;

     var rectangle =sender as Rectangle;
     if (rectangle != null)
     {
         rectangle.Fill.Opacity =0.25;            
     }
}
Run Code Online (Sandbox Code Playgroud)

什么var rectangle=sender as Rectangle意思?

此代码也适用var Rectangle=sender as Rectangle

pok*_*oke 5

事件sender只是作为对象传递给事件处理程序。现在,当引发该事件时,您通常知道可以期待什么样的发送者(因为您自己设置了事件处理程序),但该方法仍然需要一个object类型。

现在as是一种类型转换,它尝试将对象转换为该类型,但null如果类型不兼容则返回。所以在这种情况下,你有这个:

var rectangle = sender as Rectangle;
Run Code Online (Sandbox Code Playgroud)

有两种可能:

  1. sender是一种可以分配给 a 的类型Rectangle,在这种情况下,rectangle将包含对同一对象的引用,但类型为 aRectangle而不仅仅是object
  2. sender是其他类型,在这种情况下rectangle将是null,它在以下检查中被捕获。