タグ付けされた質問 「automatic-properties」

11
パブリックフィールドと自動プロパティ
フィールドを外部に公開するのではなく、クラスフィールドのゲッターメソッドとセッターメソッド(C#のプロパティ)を作成してカプセル化を保護する必要があるとよく言われます。 しかし、フィールドが値を保持するためだけに存在し、取得または設定するための計算を必要としない場合がよくあります。これらについては、私たちはすべてこの数を行います: public class Book { private string _title; public string Title { get{ return _title; } set{ _title = value; } } } まあ、私は自白があります。私はそれをすべて書くことに耐えられなかったので(本当に、それを書く必要はなく、それを見る必要がありました)、私は不正に行き、パブリックフィールドを使用しました。 その後、C#3.0が追加され、自動プロパティが追加されたことがわかります。 public class Book { public string Title {get; set;} } どちらかと言うと整然としていますが、私は感謝していますが、実際には、パブリックフィールドを作成することと何が違うのでしょうか。 public class Book { public string Title; }

18
C#3.0自動プロパティ—有用かどうか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 この質問を改善する 注:これは、C#を使い始めたときに投稿されました。2014年の知識があれば、自動プロパティはC#言語でこれまでに起こった中で最高のものの1つであると本当に言えます。 プライベートフィールドとパブリックフィールドを使用して、C#でプロパティを作成するのに慣れています。 private string title; public string Title { get { return title; } set { title = value; } } 今、.NET 3.0では、自動プロパティを取得しました。 public string Title { get; set; } 私はこれが哲学的/主観的な質問であることを知っていますが、各フィールドに5行のコードを保存する以外に、これらの自動プロパティを使用する理由はありますか?私の個人的な不満は、これらのプロパティが私から何かを隠していることであり、私は黒魔術の大ファンではありません。 実際、非表示のプライベートフィールドはデバッガにも表示されません。これは、get / set関数が何も実行しないという事実を考えると問題ありません。しかし、実際にゲッター/セッターロジックを実装する場合は、とにかくプライベート/パブリックペアを使用する必要があります。 後でゲッター/セッターのロジックを変更する機能を失うことなく、多くのコード(1行と6行)を保存できるというメリットがありますが、パブリックフィールド "Public string Title"を宣言せずに、すでにそれを行うことができます。 {getの必要性; セットする; }ブロックし、さらに多くのコードを保存します。 それで、ここで何が欠けていますか?なぜ誰もが実際に自動プロパティを使用したいのですか?

10
C#3.0以降のプロパティとフィールドの違い
StackаэтотвопросестьответынаStack Overflowнарусском:Длячегонужнысвойства? C#のフィールドとプロパティの違いは何ですか?しかし、私の質問には(私の観点から)若干の違いがあります: それを知ったら 「プロパティでのみ機能するテクニック」ではクラスを使用しません。 ゲッター/セッターでは検証コードを使用しません。 プロパティの設定におけるある種の制御のように、(スタイル/将来の開発のものを除いて)何か違いはありますか? 間に追加の違いはありますか: public string MyString { get; set; } そして public string myString; (最初のバージョンではC#3.0以降が必要であり、コンパイラーがプライベートフィールドを作成することを認識しています。)

12
C#遅延読み込み自動プロパティ
C#では、 自動プロパティを、指定されたデフォルト値を持つ遅延ロードされた自動プロパティに変換する方法はありますか? 本質的に、私はこれを変えようとしています... private string _SomeVariable public string SomeVariable { get { if(_SomeVariable == null) { _SomeVariable = SomeClass.IOnlyWantToCallYouOnce(); } return _SomeVariable; } } 別の何かに、私はデフォルトを指定でき、それが残りを自動的に処理します... [SetUsing(SomeClass.IOnlyWantToCallYouOnce())] public string SomeVariable {get; private set;}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.