0

如果我双击一个新的 winform 按钮uxHelloButton,则会出现以下内容:

private void uxHelloButton_Click(object sender, RoutedEventArgs e)

为什么默认是私有的?如果我删除私​​有并保留以下内容,它仍然可以正常工作:

void uxHelloButton_Click(object sender, RoutedEventArgs e)

添加此范围是否可以避免潜在问题?

4

2 回答 2

1

问题是:您为什么要使其易于访问?一般来说,最好为每个元素提供所需的最严格的权限。如果你不这样做,你就冒着一些类可以在不应该调用这个函数的风险。

即使从 OOP 的角度来看,这也必须是私有的。此函数是表单用于处理按钮单击的回调。它并不意味着由您或任何外部类显式调用。

如果要调用此方法,请改用以下内容:

private void uxHelloButton_Click(object sender, RoutedEventArgs e)
{
    SomethingToDo(...);
}
protected void SomethingToDo(...)
{
    ....
}

Ps:C#中实例方法的默认作用域是私有的,你没有通过删除private关键字来扩展它。

于 2012-06-06T07:17:45.727 回答
0

AFAIK,这些事件仅由该表单的实例调用。这在课堂外无法使用。所以它是这样设计的。

于 2012-06-06T07:13:11.083 回答