13

クラス定義を配布するのは非常に危険な機能であり、それについてすべて知っているかどうか本当に確信が持てないので、これを求めています。3つの部分的な定義を見つけたとしても、どこかに4つ目がないことをどうやって知ることができますか?

私はC#を初めて使用しますが、C ++で10年間過ごしました。それが、私が動揺している理由かもしれません。

とにかく、「部分的な」概念には大きなメリットがあるはずですが、私には明らかに欠けています。その背後にある哲学についてもっと学びたいです。

編集:申し訳ありませんが、既存の投稿を検索するときにこの重複を見逃しました。

4

6 に答える 6

31

部分クラスは、コード生成を使用するときに便利です。生成されたクラスを(継承するのではなく)変更する場合は、コードが再生成されたときに変更が失われるリスクがあります。追加のメソッドなどを別のファイルで定義できる場合は、クラスの生成された部分を、手作りのコードをいじることなく再作成できます。

于 2009-09-18T09:38:56.123 に答える
11

大きな利点は、コンピューターで生成されたコードを(設計者が)非表示にすることです。Eric Lippertは、一般的な部分キーワード
に関する最近のブログ投稿をしています。

別の使用法は、ネストされたクラスに独自のファイルを与えることです。

于 2009-09-18T09:38:18.403 に答える
3

2人が同じクラスを編集し、自動生成されたデザイナーコードは、部分的なクラスとメソッドによって解決されたことがわかる2つの直接的な機能です。

デザイナーが生成したコードを別のファイルに入れると、Visual Studio(Windowsフォーム)によってコードが頻繁に壊される可能性がある1.1と比較して、操作がはるかに簡単になります。

Visual Studioは、デザイナーファイル、コードビハインド、およびデザインファイルをASP.NETと同期することを依然として混乱させます。

于 2009-09-18T09:38:41.617 に答える
3

もう1つのポイントは、クラスが複数のインターフェイスを実装する場合、異なるファイルでインターフェイスの実装を分割できることです。

したがって、すべてのコードファイルには、インターフェイス実装に属するコードのみが含まれます。関心の分離の概念によるものです。

于 2009-09-18T09:45:17.080 に答える
2

なんらかの理由で論理的に小さなクラスに分割できない、または許可されていない、ある種の非常に大きなクラスがある場合は、それをより効果的に処理するために、少なくとも物理的に複数のファイルに分割できます。基本的に、上下にスクロールすることなく、一度に小さなチャンクを表示できます。

これは、おそらくいくつかの難解なポリシーのために、多数の定着した依存関係のために既存のAPIを混乱させることが許可されていないレガシーコードに適用される可能性があります。

部分クラスを必ずしも最適に使用する必要はありませんが、他の方法では変更できない可能性のあるコードを整理するための代替オプションを確実に提供します。

于 2009-09-18T09:55:32.033 に答える
1

手遅れかもしれませんが、2セントも追加させてください。

*。大規模なプロジェクトで作業する場合、クラスを別々のファイルに分散させると、複数のプログラマーが同時に作業できるようになります。

*。VS.NETで生成されたクラスのコード(拡張機能用)を簡単に記述できます。これにより、システムで生成されたコードをいじることなく、必要なコードを記述できます。

于 2011-07-15T21:56:06.917 に答える