2011-04-11 10 views
0

可能性の重複に:
C#: Can I remove “{ get; set; }”?{get;セット; } C#

私のコードは次のような行の数百ました:

public string abc { get; set; } 
public string def { get; set; } 

すべては彼らの最後に{ get; set; }を持っています。

コードをクリーンアップし、まだ公開している間に{ get; set; }の必要性を取り除く方法があるのではないかと私は思います。

私はそれが大きな問題ではないことを知っていますが、できるだけ自分のコードをクリーンアップしたいと思います。

+9

* *は、プロパティを実装するための最も冗長な方法です。 –

+1

可能な重複[質問](http://stackoverflow.com/questions/1693875/c-can-i-remove-get-set) – KaeL

+0

私はこのコードがおそらく、すでに隠蔽して機能を抽象化していると考えれば、最もクリーンであると思います。それ以下であれば財産ではないでしょう。あなたは 'public string abc;'を使うことができますが、それはメンバーではなくプロパティです。 –

答えて

8

なしうまく。自動的にプロパティを実装するのは{get;set;}です。彼らなしでは彼らは畑になる。あなたは本当にパブリックフィールドを望んでいないので、それをそのままにしておきます。

本当に、ここで問題は解決していません。それを残す。あなたことができますが、彼らはもはやパブリックプロパティ意志と代わりの形に取るなど

3

カウントこれは(自動的に実装プロパティが導入された少なくともので)正常であり、{get;set;}はラインに追加されていません(確かに優先ではなく、必ず、その独自の裁量で使用するために、ひんしゅくを買うことになる)パブリック変数:

public string abc; 
public string def; 

私はプロパティとしてそれらを保つと言うだろう、自動実装プロパティは神ですあなたの懸念は根拠がありません。

0

同じプロパティを持つクラスがある場合は、互いに拡張できます。 StudentShopKeeper上記の例では

class Person 
{ 
    public string Name { get; set; } 
} 

class Student : Person 
{ 
    public string StudentId { get; set; } 
} 

class ShopKeeper : Person 
{ 
    public Shop Shop { get; } 
} 

あなたは一度だけ、それを記述する必要を意味し、プロパティNameを継承します。

getsetの方法をもっと簡単にすることはできません。

0

{ get; set; }を削除すると、パブリックプロパティの代わりにパブリックフィールドが表示されます。依存関係のコンポーネントを壊さずに実装を隠して変更できるため、クラスの単純なメンバーを公開するにはプロパティがよく使われます。

コードの繰り返しが多い場合は、コードをクリーンアップするために、共通のプロパティ(およびメソッド)に基本クラス/継承を使用することを検討してください。

0

:)あなたは、以下のようにバッキングフィールドとプロパティを見ている必要があります。

 private string _test; 
     public string Test 
     { 
      get { return _test; } 
      set { _test = value; } 
     } 

今それは:)

1

{ get; set; }をクリーンアップする必要がありますが、setter and getter property(正確にそれらを伝えることauto-implemented propertiesある)のために持っていることを意味しフィールド。クラス内にパブリックフィールドを持つのは良い考えではないので、フィールドをプロパティでカプセル化する必要があります。それで、あなたがそれらを持っていることは良いことです。