我正在扩展控件的功能。我想知道在事件中使用已转换的发件人与此关键字是否有任何优势。例如:
public class CustomTextBox : TextBox
{
public CustomTextBox()
{
Loaded += CustomTextBox_Loaded;
}
void CustomTextBox_Loaded(object sender, RoutedEventArgs e)
{
//use either
var c = (CustomTextBox)sender;
//or
var c2 = this;
//do whatever...
}
}
我相信使用这个可能会更有效率(无需播放)。
答案 0 :(得分:1)
通常在订阅者类中,在发布它们的类之外处理事件。在这样的设置中,可能希望获得订户和发布者中的发布者的参考。也就是当类型转换发件人以获得发布者的引用时很方便。
我同意,在我看来,如果您可以在没有更好的类型转换的情况下获得发布者的引用,则应使用File.WriteAllText(@"yourPathOfTheFile\array.txt", stringBuilder.ToString());
。
但是,由于您正在扩展控件,请检查是否真的有必要使用基类的事件。一个事件是针对外部世界的,而不是针对儿童课程。
如果在基本控件类中正确实现了事件模式,我希望有一个虚拟方法负责提升你可以在扩展控件时覆盖哪个,如下所示 -
SELECT * FROM VISITS WHERE VISIT_TIME > :dateTime
希望它有所帮助。
答案 1 :(得分:0)
我怀疑你会发现任何可衡量的性能差异,特别是对于像Loaded
这样的事件,只会在控件的生命周期内被提升一次。
那就是说,在我看来你应该继续使用this
,因为它更方便和富有表现力。如果您的方法已经在发件人类的代码中,为什么不呢?在编程中使用sender
参数而不仅仅使用this
时,代码理解,编写的简易性,可维护性或任何其他共同目标可能有什么好处?