2011-01-13 4 views
1

私は、他のクラスのなかでやや複雑なクラスを入れ子にしているプロジェクトに取り組んでいます。これらを別々のファイルに分割すると、混乱の中で何らかの順序を維持するのに役立つでしょう。ファイルを分割して読みやすくするコードを作成しようとしています。余分なインデントを避けるためのショートカット

しかし、単一のネストされたクラスでは、ファイルに何も他のクラスが含まれていなくても、各行に3レベルのインデントをプレフィックスとして付ける必要があります。単純な文でも(関数/クラス/変数の名前が長いものは多いものの)

ファイルには、次のようになります。

だから、
namespace Example.Namespace1 
{ 
    public partial class ImportantClass 
    { 
     protected partial class Nested1 
     { 
      // I can finally start writing code here 
      public int AddOffset(int offset) 
      { 
       // Code inside of a method 
      } 

      public string ID{ get; protected set; } 
     } 
    } 
} 

を、私は(例えばprotected partial class ImportantClass.Nested1は動作しますが、そのようなことはありません)私にいくつかの水平方向のスペースを節約することができNested1を宣言へのショートカットはありますか?

+3

ネスティングを除いて、あなたは意味しますか? –

+0

すべてを1行にまとめることができます。 –

答えて

1

答えはいいえです。

ここにいくつかの代替アプローチがありますが、質問への回答にはがあります。ネストされたクラスにはC#に省略表現がありますか?いいえ、そうではありません。

4

しないでください。

クラスのネストは、単純な内部使用クラスのために控えめに使用してください。あなたが別のファイルにそれらを分割しようとしているという事実は、あなたに何かを教えてくれます。つまり、あなたはネストされたクラスで少し外に出てしまいました。

あなたのコードの外側に公開して使用すると、醜いです。

内部的に内部修飾子を使用する必要がある場合は、名前空間とプロジェクトフォルダは、すべてを整理しておくのに役立ちます。

+0

私のオプションは、「重要なクラス」名前空間を、そこに属していないような新しい機能で混乱させることです。あるいは、少なくとも分離の感覚を与えるために入れ子にされたクラスでそれらを包むことです。これは私のペットプロジェクトではないので、名前空間に再因子付けするオプションはありません。 – palswim

+1

Example.Namespace1名前空間の下に名前空間を配置しないでください。つまり名前空間です。Example.Namespace1.InternalStuff {... – Neil

+1

もう1つの質問 - これらのクラスをアセンブリの外で使用するつもりはありますか?内部の場合は、内部にマークを付けるだけで、アセンブリのパブリックインターフェイスには含まれません。 – Neil

関連する問題