0

新しい winform ボタンをダブルクリックするとuxHelloButton、次のように表示されます。

private void uxHelloButton_Click(object sender, RoutedEventArgs e)

なぜデフォルトが非公開なのですか? private を削除して以下を残しても問題なく動作します:

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

私の知る限り、これらのイベントはそのフォームのインスタンスによってのみ呼び出されます。THat はクラス外では使用できません。だから、そのように設計されました。

于 2012-06-06T07:13:11.083 に答える